首页 > 解决方案 > 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-amplify

解决方案


这是AWS Cognito 文档提出的解决方案:

您无法使用一次性代码验证映射的电子邮件地址。相反,映射来自您的身份提供者的属性以获取验证状态。例如,Google 和大多数 OIDC 提供商都包含 email_verified 属性。

如上所述,Google 提供了该属性,您可以使用该属性来检测电子邮件是否已通过验证。

不幸的是,Facebook 身份验证并非如此。一种解决方案是按照此处所述实现Post Authentication lambda 触发器。


推荐阅读