首页 > 解决方案 > 在不使用 sendEmailVerification 方法的情况下,在 Firebase 中使用 AuthProvider 连接时自动验证用户电子邮件?

问题描述

我已经使用 Firebase 在我的应用程序上实现了连接 GitHub、Twitter 和 Facebook 的按钮AuthProvider。即使它有效并且用户已注册并登录,但电子邮件地址仍被视为未验证。因为他们使用另一个平台上已经存在的帐户进行连接,我假设他们的电子邮件已经通过这些平台验证,所以我想跳过这个sendEmailVerification()阶段并自动考虑他们的电子邮件经过验证。我怎样才能在 Angular 中做到这一点?

这是我实现登录过程的方式:

async loginWithSocial(social: string) {
    try {
        let provider = null;
        if (social === "github") {
            provider = new firebase.auth.GithubAuthProvider();
        } else if (social === "twitter") {
            provider = new firebase.auth.TwitterAuthProvider();
        } else if (social === "facebook") {
            provider = new firebase.auth.FacebookAuthProvider();
        }
        const result = await firebase.auth().signInWithPopup(provider);
        const credential = result.credential;
        const user = await this.auth.signInWithCredential(credential);
        await this.router.navigate(["/", "home"]);
    } catch (error) {
        // do something
    }
}

标签: angulartypescriptfirebaseauthenticationfirebase-authentication

解决方案


并非所有平台都会验证所有电子邮件地址。对于那些这样做的人(@gmail.com 的 Google,@facebook.com 的 Facebook 等),Firebase 身份验证在用户配置文件的验证状态中反映了这一点。

如果您想对您的应用程序有更宽松的要求,您可以使用 Admin SDK 从受信任的环境设置emailVerified标志。这不能从客户端 SDK 完成,因为这将允许任何用户设置自己的标志。


推荐阅读