在 Firebase 中使用 Google 身份验证未收到电子邮件

Posted

技术标签:

【中文标题】在 Firebase 中使用 Google 身份验证未收到电子邮件【英文标题】:Not getting the email using Google Authentication in Firebase 【发布时间】:2016-10-25 23:57:06 【问题描述】:

我正在使用 Firebase 提供的代码进行 Google 身份验证,不知何故,身份验证成功,但电子邮件未正确导入 Firebase。

https://firebase.google.com/docs/auth/ios/google-signin

正如您在下面的屏幕截图中看到的,电子邮件是空白的。当我查看调试器时,它显示为零。 我单击了允许在身份验证期间查看电子邮件,但我认为仍有一些设置未正确完成。有人可以帮我看看吗?我有兴趣使用电子邮件为每个用户创建用户名。

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) 
    if let error = error 
        print(error.localizedDescription)
        return
    

    let authentication = user.authentication
    let credential = FIRGoogleAuthProvider.credentialWithIDToken(authentication.idToken,
                                                                 accessToken: authentication.accessToken)
    FIRAuth.auth()?.signInWithCredential(credential)  (user, error) in
        if error != nil 
            print(error?.localizedDescription)
            return
        

        print("User logged in with Google...")
        self.performSegueWithIdentifier("ToHome", sender: nil)
    

【问题讨论】:

您想拥有多个帐户使用同一个电子邮件地址吗? 我刚刚禁用了多个帐户。现在我收到了电子邮件...谢谢... 听起来你们两个之间,有一个答案。你们谁可以写出来吗? @FrankvanPuffelen 刚刚做到了。我还有一个疑问,你能确认我的最后一段是否有意义吗? 如有疑问,我会删除该声明。 ;-) 【参考方案1】:

该电子邮件未显示在 Firebase 控制台上,因为您允许用户使用同一电子邮件创建多个帐户。如果您导航到 Auth -> 登录方法,您可以将选项设置为 避免使用同一电子邮件创建多个帐户。这样做之后,电子邮件将在创建用户时开始出现。

这里不确定,但是,如果您仍想创建多个帐户并在应用程序端拥有用户电子邮件,我想您需要在创建用户时将电子邮件存储在 firebase 数据库中。

【讨论】:

我选择了“避免创建多个...”,并且用户仍然通过 Facebook 进行身份验证而没有电子邮件。任何其他想法为什么会发生这种情况? 那么,当我允许使用同一个电子邮件地址创建多个帐户时,如何从 firebase 获取电子邮件?【参考方案2】:

您可以在列表ProviderData中搜索:

userFirebase.providerData

providerId "google.com" 像往常一样有电子邮件。

【讨论】:

以上是关于在 Firebase 中使用 Google 身份验证未收到电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase 进行 Google 身份验证

检查用户是不是在 Android 的 Firebase Google 身份验证中首次通过身份验证

在使用 Firebase 身份验证的 Unity 项目中使用 Google Drive API

请求的身份验证范围不足 - 在 Flutter 中使用 Firebase 从 Google 登录获取生日时出错

Unity/Firebase 如何使用 Google 进行身份验证?

Firebase google 身份验证在发布模式下不起作用