您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

处理Firebase + Facebook登录过程

处理Firebase + Facebook登录过程

用户单击FB登录按钮时:

->执行本机FB登录。(就像您现在正在做什么)

->执行Firebase身份验证。

->但此外,请检查FirDatabase中是否存在数据

      FBSDKGraphRequest(graPHPath: "/me", parameters: ["fields": "name"]).start { (connection, result, err) in

            let accessToken = FBSDKAccessToken.current()
            guard let accessTokenString = accessToken?.tokenString else {return}
            let credentials = FIRFacebookAuthProvider.credential(withAccessToken: accessTokenString)

            FIRAuth.auth()?.signIn(with: credentials, completion: { (user, error) in

                if error != nil {
                    return
                }

                self.checkDataExistsinfirDataBaaseForUID(user.uid){
                  loginStaus in
                  if(loginStaus){
                        // logged in
                    self.performSegue(withIdentifier: "loginToRooms", sender: nil)
                   }else{
                        // not logged in
                    self.performSegue(withIdentifier: "showSetupScreen", sender: nil)
                   }
}

            })

            if err != nil {
                return
            }
        }

理想情况下,在设置页面之后,您必须在FirebaseDatabase中的节点用户-> uID下添加设置信息。因此,请检查此方法中是否存在任何此类节点。

func checkDataExistsinfirDataBaaseForUID(_ uid: String, completion: (result: Bool) -> Void) {
 let ref = FIRDatabase.database().reference().child("users").child(uid)

    ref.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        completion(snapshot.exists())
     })
}

测试用例 :

满足。

在fb登录之后-> firbase身份验证-> Firdatabse节点检查->如果返回true->登录到应用程序

通过使用您的装饰过程, FIRAuth.auth()?.addStateDidchangelistener {}

其他 2022/1/1 18:16:06 有514人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶