我正在创建一个后端工具,以使用Python和boto3在AWS Cognito用户池中创建一些帐户。使用CognitoIdentityProvider的admin_create_user创建帐户似乎可以正常工作,但是当我尝试使用新帐户登录我们的应用程序时,收到400响应:
{“ __ type”:“ UserNotFoundException”,“消息”:“用户不存在。”}
我确保已将用户实际添加到认知用户池中,并且已启用该用户。
我还指定在创建帐户后自动验证电子邮件地址。
这是我的帐户创建功能:
import boto3
idp_client = boto3.client('cognito-idp')
# Redacted for stackoverflow example
user_pool_id = 'XXXXXXXXXXX'
response = idp_client.admin_create_user(
UserPoolId=user_pool_id,
Username=email,
UserAttributes=[
{
'Name': 'email',
'Value': email
},{
'Name': 'email_verified',
'Value': 'true'
}
],
TemporaryPassword=generateSecureRandomString()
)
我希望在Cognito用户池中成功创建该帐户后,该帐户似乎已启用并经过验证,这应该会导致该帐户可以登录。
任何可以解决该问题的方法将不胜感激!
答案 0 :(得分:0)
该代码非常好。因此,池设置或登录流程肯定是一个问题。
在池设置中,确保将其设置为使用“电子邮件地址或电话号码”而非用户名登录。
在登录流程中,您是否正在使用托管的ui?可能值得尝试一下,因为它将清除您的登录代码中的所有问题。请注意,您的用户将被设置为状态“ FORCE_CHANGE_PASSWORD”。我不确定如果您尝试使用自己的代码登录某人,但cognito会返回什么错误,但是他们设置了该密码。