我正在尝试将responsdToAuthChallenge与NEW_PASSWORD_REQUIRED一起使用来更改用户的密码。我不断地得到";给定的属性无效,given_name丢失"错误。我已经尝试将用户的属性添加到调用中,但似乎找不到任何关于如何在调用中格式化数据的文档。
这是原始代码。。。
$QUERY = $COG_CLIENT->respondToAuthChallenge([
'ChallengeName' => 'NEW_PASSWORD_REQUIRED',
'ClientId' => $COG_CLIENT_ID,
'ChallengeResponses' => [
'USERNAME' => $USER_EMAIL,
'NEW_PASSWORD' => $USER_NEW_PASS,
'SECRET_HASH' => $SEC_HASH,
],
'Session' => $COG_USER_SESSION,
]);
然后我尝试添加用户属性,比如…
$QUERY = $COG_CLIENT->respondToAuthChallenge([
'ChallengeName' => 'NEW_PASSWORD_REQUIRED',
'ClientId' => $COG_CLIENT_ID,
'ChallengeResponses' => [
'USERNAME' => $USER_EMAIL,
'NEW_PASSWORD' => $USER_NEW_PASS,
'SECRET_HASH' => $SEC_HASH,
'UserAttributes' => '{"given_name":"Bob"}',
],
'Session' => $COG_USER_SESSION,
]);
但我还是犯了同样的错误。如果我将UserAttributes值格式化为数组,我会得到一个错误,说应该是一个字符串。
有人知道我应该如何传递用户属性吗?我对这件事非常着迷。
啊,我想我是在尝试了几个小时不同的变体后才明白的。。。这就是最终奏效的方法。
$QUERY = $COG_CLIENT->respondToAuthChallenge([
'ChallengeName' => 'NEW_PASSWORD_REQUIRED',
'ClientId' => $COG_CLIENT_ID,
'ChallengeResponses' => [
'USERNAME' => $USER_EMAIL,
'NEW_PASSWORD' => $USER_NEW_PASS,
'SECRET_HASH' => $SEC_HASH,
'userAttributes.given_name' => 'Bob',
],
'Session' => $COG_USER_SESSION,
]);
我不敢相信这件事没有记录在案。