使用 Firebase 进行 Google 身份验证

Posted

技术标签:

【中文标题】使用 Firebase 进行 Google 身份验证【英文标题】:Google Authentication With Firebase 【发布时间】:2017-03-16 00:49:37 【问题描述】:

我在 Xcode 8 中使用 Swift 3,并且在我的代码中使用了这扇门。有什么办法可以解决吗?如果有人可以提供帮助,我将不胜感激。

 FIRAuth.auth()?.signIn(with: credential, completion: (user: FIRUser?, error: NSError?) in
            if error != nil 
                print(error!.localizedDescription)
                return
            else 
                print(user?.email)
            print(user?.displayName)

错误:

无法将类型 '(FIRUser?, NSError?) -> ()' 的值转换为预期的参数类型 'FIRAuthResultCallback?'

【问题讨论】:

【参考方案1】:

您的完成块需要变量名称作为返回值(用户对象和错误) 在下面的示例中,我为用户对象添加了名称“用户”,为错误对象添加了错误。

FIRAuth.auth()?.signIn(with: credential, completion: (user, error) in
                if error != nil 
                    print(error!.localizedDescription)
                    return
                else 
                    print(user?.email)
                print(user?.displayName)

【讨论】:

【参考方案2】:

实际上,在 Xcode 8 中,有时我们在打开完成块时会遇到问题。并且在您的代码中,该块无法正确打开。您的块应打开为:

FIRAuth.auth()?.signIn(with: credential , completion:  (user, error) in
      //Do as per your need here  
)

希望,这有帮助

【讨论】:

【参考方案3】:

确保您没有在代码中复制FIRAuth.auth()?.signIn。当我将它放在 SignInViewController 类下方时出现错误。 这是我在最新的 Swift 4 中尝试过的 ios Google Sign 的工作代码。

FIRAuth.auth()?.signIn(with: credential, completion:  (user: FIRUser?, error: Error?) in
if error != nil 
print(error!.localizedDescription)
return
 else 
print(user?.email)
print(user?.displayName)

【讨论】:

以上是关于使用 Firebase 进行 Google 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase 进行 Google 身份验证

将 Google 身份验证令牌与 Firebase 一起使用

使用 Google Play 游戏进行 Firebase 身份验证

使用 google firebase 和 spring 进行身份验证

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

如何将 Google Play 游戏登录与 Firebase 身份验证结合使用