首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google通过Firebase登录: GIDSignInDelegate不符合ViewController

Google通过Firebase登录: GIDSignInDelegate不符合ViewController
EN

Stack Overflow用户
提问于 2016-03-29 23:14:51
回答 5查看 8.4K关注 0票数 5

我正在向我的应用程序介绍Google登录,虽然Google和Firebase文档都足够彻底,但我所做的工作还不够.我还在犯这个错误。希望这将有助于其他人在提前实现自己的SDK....thanks时找到解决问题的方法,以便对这个庞然大物进行审查:

这是火基导轨谷歌指南:

所以

  1. Google添加到podfile - CHECK中
  2. 将行添加到Bridging-Header中-检查
  3. GoogleService-Info.plist & bundle标识符和反向客户ID添加到URL方案中-检查
  4. 应用程序代理有以下内容,没有错误,但我注意到在Facebook登录(正确工作)和新谷歌之间可能会发生冲突,我不知道如何一起处理:

P.S.我没有在这里添加GIDSignInDelegate到AppDelegate,因为我计划使用VC来处理登录逻辑,如下所示.

  1. LoginVC ViewController代码如下: 类LoginVC: UIViewController、UIViewControllerTransitioningDelegate、UITextViewDelegate、UITextFieldDelegate、GIDSignInDelegate、GIDSignInUIDelegate { override (){ super.viewDidLoad() let ref =Firebase(Url) GIDDSignIn.sharedInstance().delegate = self GIDSignIn.sharedInstance().uiDelegate = self GIDSignIn.sharedInstance().signInSilently() / for,如果用户最近已经通过身份验证}

然后这个,据我所见.应该是谷歌需要与Firebase对话的所有内容:

代码语言:javascript
复制
        // Implementing the required GIDSignInDelegate methods
        func googleSignIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
            if (error == nil) {
                // Auth with Firebase
                let userId = user.userID
                let idToken = user.authentication.idToken
                let fullName = user.profile.name
                let givenName = user.profile.givenName
                let familyName = user.profile.familyName
                let email = user.profile.email
                ref.authWithOAuthProvider("google", token: user.authentication.accessToken, withCompletionBlock: { (error, authData) in
                    // User is logged in!
                })
            } else {
                print("\(error.localizedDescription)")
            }
        }


        func googleSignOut() {
            GIDSignIn.sharedInstance().signOut()
            ref.unauth()
        }

        // Implement the required GIDSignInDelegate methods and Unauth when disconnected from Google
        func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!, withError error: NSError!) {
            ref.unauth()
        }


        // IBAction to handle the sign-in process
        @IBAction func googleButtonPressed(sender: TKTransitionSubmitButton!) {
            GIDSignIn.sharedInstance().signIn()
        }

莫名其妙?对于长时间的guys...but,我已经完成了Firebase指南所建议的所有操作,这意味着AppDelegate的Google中的逻辑都在ProfileVC中。有什么指示吗?

EN

回答 5

Stack Overflow用户

发布于 2016-07-18 10:31:27

它是说您的类还没有为您的GIDSignInDelegate实现必需的方法。Swift 3中的方法名称有很大的变化。因此,您的新方法将是

公共函数符号(_ signIn: GIDSignIn!,didSignInFor用户: GIDGoogleUser!,withError错误: NSError!)

请检查图书馆屏幕截图。因此,在新的方法或类命名的新的3种约定中,In是缺失的。

票数 5
EN

Stack Overflow用户

发布于 2016-06-25 18:15:01

我通过键入"func“并在”建议“框中搜索找到了所需的方法。

哦,我想念Android的Alt+Enter功能

(顺便说一句,这是XCode 8 beta版的Swift 3版)

代码语言:javascript
复制
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: NSError!) {
        let authentication = user.authentication
        let credential = FIRGoogleAuthProvider.credential(withIDToken: (authentication?.idToken)!,
                                                          accessToken: (authentication?.accessToken)!)
        let comp:FIRAuthResultCallback = { (user:FIRUser?, error:NSError?) in
            if error == nil {
                DataStorage.inst.user.id = user?.uid
            }
        }
        FIRAuth.auth()?.signIn(with: credential, completion: comp)
    }

    func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: NSError!) {

    }
票数 2
EN

Stack Overflow用户

发布于 2016-09-23 10:35:47

只需替换

代码语言:javascript
复制
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: NSError!) {
    if (error == nil) {
        // Perform any operations on signed in user here.

    } else {
        print("\(error.localizedDescription)")
    }}

使用

代码语言:javascript
复制
public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    //Code
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36296798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档