AWS Cognito PHP响应AuthChallenge NEW_PASSWORD_REQUIRED用户属性丢失



我正在尝试将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,
]);

我不敢相信这件事没有记录在案。

相关内容

最新更新