如果用户同时提供电子邮件和电话,我需要同时验证两者。如果没有这里描述的额外步骤,看起来没有办法做到这一点
有没有办法要求同时进行验证?
目前看来我必须等待验证电话号码,首先验证phoneNumbber。之后调用initiateAuth获取访问令牌以检索userInfo并检查电子邮件是否需要验证,并发送验证码。从测试中我发现电子邮件验证不会阻止initiateAuth请求,因此需要在每个initiateAuth请求之前发出getUser请求,以查看是否需要验证,如果电子邮件仍需要验证,则不返回访问令牌。
答案 0 :(得分:0)
我在Cognito团队。此时描述的方案是不可能的(在登录前需要验证电子邮件和电话号码)。如果电话号码和电子邮件都需要验证,如果用户属性中存在电话号码,则验证码将被发送到电话号码,并按优先顺序排列。此外,调用verifyUserAttribute以使您能够验证电子邮件需要AccessToken将电子邮件标记为已验证。
答案 1 :(得分:0)
不幸的是,如果您在注册时未提供电话号码,Cognito只会向您发送电子邮件验证链接。如果您提供一个空的电话号码属性值和一个有效的电子邮件地址,在这种情况下,它将发送电子邮件。
这真的很糟糕,因为SMS消息有时无法实时到达端点。
答案 2 :(得分:0)
例如,如果您想验证注册流程中的两种联系方式,您可以这样做(例如,您必须拥有自己的 otp 验证流程):
https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-create-user.html
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html
setTimeout
(这个可以在你开发的otp验证后编程)
https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html
aws cognito-idp admin-create-user --user-pool-id us-east-2_fggdfg --username 117979111 --user-attributes Name=email,Value=calderonr.robinson@gmail.com Name=phone_number,Value="+5732085654" Name=custom:id,Value="1179791" Name=name,Value="Robinson C" --message-action SUPPRESS
https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html
aws cognito-idp admin-set-user-password --user-pool-id us-east-2_fggdfg --username 117979111 --password "loquesea" --permanent
您可以使用 aws SDK 2 完美地完成这一切