相关疑难解决方法(0)

无法通过 AWS Cognito API 重新发送验证码

我有一个 AWS Cognito 用户池,其中用户是使用AdminCreateUser操作通过 Cognito 的 API 创建的,它工作正常。这会向用户发送一封验证电子邮件,其中包含一个临时密码。到现在为止还挺好。

现在用户没有收到此验证电子邮件,因此我需要使用ResendConfirmationCode操作再次发送它。我试图用下面的 PHP 代码来做到这一点。

$userPoolId = '[POOL_ID_HERE]';
$backendAppId = '[APP_ID_HERE]';
$clientSecret = '[SECRET_HERE]';
$username = '[UUID_HERE]';

$secretHash = base64_encode(hash_hmac('sha256', $username . $backendAppId, $clientSecret, true));

$cognitoIdp->resendConfirmationCode([
    'ClientId' => $backendAppId,
    'SecretHash' => $secretHash,
    'Username' => $username,
]);
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

Aws/CognitoIdentityProvider/Exception/CognitoIdentityProviderException 带有消息“在“ https://cognito-idp.eu-central-1.amazonaws.com ”上执行“ResendConfirmationCode”时出错;AWS HTTP 错误:客户端错误:POST https://cognito-idp.eu-central-1.amazonaws.com 导致400 Bad Request响应:{"__type":"NotAuthorizedException","message":"无法为此用户重新发送确认代码"} NotAuthorizedException(客户端):无法为此重新发送确认代码用户 - {"__type":"NotAuthorizedException","message":"无法为该用户重新发送确认码"}'

我正在使用对用户池具有以下 IAM 权限的用户的凭据:

  • cognito-idp:AdminDeleteUser
  • cognito-idp:AdminCreateUser
  • cognito-idp:AdminAddUserToGroup
  • cognito-idp:ResendConfirmationCode

如果我使用IAM Policy Simulator测试权限,它会给我绿灯,说一切正常。据我所知,cognito-idp:ResendConfirmationCode操作应该足够了,因为在创建用户时发送验证电子邮件工作正常。

我在这里做错了什么?另一种方法是再次调用 AdminCreateUser 操作,将 …

amazon-web-services amazon-cognito

4
推荐指数
1
解决办法
5698
查看次数