aws-amplify - Amplify React Federated 登录要求每次登录时验证电子邮件
问题描述
google 和 facebook 联合登录方法都要求用户在每次登录时验证他们的电子邮件,无论用户是否已经验证了他们的电子邮件。第一次验证后如何停止?
这是问题中的组件
<AmplifyAuthenticator usernameAlias="email">
<AmplifySignIn headerText="Sign into MyFive Account" slot="sign-in">
<AmplifyFacebookButton
slot="federated-buttons"
onClick={() =>
Auth.federatedSignIn({
provider: "Facebook",
})
}
/>
<AmplifyGoogleButton
slot="federated-buttons"
onClick={() => Auth.federatedSignIn({ provider: "Google" })}
/>
</AmplifySignIn>
</AmplifyAuthenticator>
解决方案
这是AWS Cognito 文档提出的解决方案:
您无法使用一次性代码验证映射的电子邮件地址。相反,映射来自您的身份提供者的属性以获取验证状态。例如,Google 和大多数 OIDC 提供商都包含 email_verified 属性。
如上所述,Google 提供了该属性,您可以使用该属性来检测电子邮件是否已通过验证。
不幸的是,Facebook 身份验证并非如此。一种解决方案是按照此处所述实现Post Authentication lambda 触发器。
推荐阅读
- java - 最小尺寸子数组
- c++ - 游戏中 TGA 图像的动态调整大小
- android - 我正在尝试创建 webview 活动,但未加载整个网站
- javascript - 从多维对象数组中删除重复项
- css - 更改融合图分割高度和宽度
- aurelia - 为什么“aurelia-cli”必须依赖“npm”包?
- google-bigquery - 使用 case when 来识别 timestamp = 'null'
- c# - Texblock 文本装饰未更新 UWP
- c# - C# Lambda 表达式替换字符串数组中的字符串值
- php - Laravel 迁移不适用于带有 MySQL 8.0.11 的 Mac OS X