Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase 3.x-Facebook登录_Ios_Swift_Facebook_Firebase_Firebase Authentication - Fatal编程技术网

Ios Firebase 3.x-Facebook登录

Ios Firebase 3.x-Facebook登录,ios,swift,facebook,firebase,firebase-authentication,Ios,Swift,Facebook,Firebase,Firebase Authentication,在Firebase 2.5.1中,我曾经这样做过,它正在工作: @IBAction func facebookLoginDidTouch(sender: AnyObject) { let facebookLogin = FBSDKLoginManager() facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { (fa

Firebase 2.5.1
中,我曾经这样做过,它正在工作:

@IBAction func facebookLoginDidTouch(sender: AnyObject) {

   let facebookLogin = FBSDKLoginManager() 

  facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
    (facebookResult, facebookError) -> Void in
        if facebookError != nil {
            print("Facebook login failed. Error \(facebookError)")
        } else if facebookResult.isCancelled {
            print("Facebook login was cancelled.")
        } else {
            let accessToken = FBSDKAccessToken.currentAccessToken().tokenString
            myRootRef.authWithOAuthProvider("facebook", token: accessToken, withCompletionBlock: { error, authData in

                    if error != nil {
                        print("Login failed. \(error)")
                    } else {
                        print("Logged in!")
                        let newUser = [
                            "provider": user.provider,  
                            "imageUrl": user!.providerData["profileImageURL"] as String,    // etc
                        ]
                    }
             })
         }
   })
}
现在我正试图在
Firebase 3.x
中实现这一点。然而,我对应该在哪里放置权限和内容感到困惑

这就是我到目前为止所尝试的

@IBAction func facebookLoginDidTouch(sender: AnyObject) {

   let facebookLogin = FBSDKLoginManager()

   let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

   FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
    if error != nil {
        print("Login failed. \(error)")
    } else {
        print("Logged in!")

        let newUser = [
           "provider": user.provider,
           "imageUrl": user!.providerData["profileImageURL"] as String
        ]
    }
   })
}
更新:

 facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
    (facebookResult, facebookError) -> Void in
    if facebookError != nil {
        print("Facebook login failed. Error \(facebookError)")
    } else if facebookResult.isCancelled {
        print("Facebook login was cancelled.")
    } else {
        // your firebase authentication stuff..

        let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

        FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
            if error != nil {
                print("Login failed. \(error)")
            } else {
                print("Logged in!")

                let userID = Helpers.extractUID(user!)

                let rootRef = FIRDatabase.database().reference()
                let userRef = rootRef.child("users").child(userID)

                userRef.observeEventType(.Value, withBlock: { snapshot in
                    if snapshot.value is NSNull {
                        let newUser = [
                            "providerId": user?.providerID,
                            "displayName": user?.displayName,
                        ]
                       userRef.setValue((newUser as! AnyObject))
                       // perform segue
                    }
                })
             }
         })

成功登录facebook并获取用户数据后。。。你必须添加firebase身份验证之类的东西

 @IBAction func facebookLoginDidTouch(sender: AnyObject) {

   let facebookLogin = FBSDKLoginManager() 

   facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
    (facebookResult, facebookError) -> Void in
        if facebookError != nil {
            print("Facebook login failed. Error \(facebookError)")
        } else if facebookResult.isCancelled {
            print("Facebook login was cancelled.")
        } else {
            // your firebase authentication stuff..

            let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

            FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
            if error != nil {
                  print("Login failed. \(error)")
            } else {
                 print("Logged in!")

            }
          })
        }
   })
}

成功登录facebook并获取用户数据后。。。你必须添加firebase身份验证之类的东西

 @IBAction func facebookLoginDidTouch(sender: AnyObject) {

   let facebookLogin = FBSDKLoginManager() 

   facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
    (facebookResult, facebookError) -> Void in
        if facebookError != nil {
            print("Facebook login failed. Error \(facebookError)")
        } else if facebookResult.isCancelled {
            print("Facebook login was cancelled.")
        } else {
            // your firebase authentication stuff..

            let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

            FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
            if error != nil {
                  print("Login failed. \(error)")
            } else {
                 print("Logged in!")

            }
          })
        }
   })
}

在其他部分…添加这些内容<代码>如果facebookError!=无{print(“Facebook登录失败。错误\(facebookError)”)}如果facebookResult.isCancelled{print(“Facebook登录被取消”)}否则{让凭证…}在其他部分…添加此内容<代码>如果facebookError!=无{print(“Facebook登录失败。错误\(facebookError)”)}如果facebookResult.isCancelled{print(“Facebook登录被取消”)}否则{让凭证…}在“你的firebase身份验证材料”中,我应该包括其他内容还是你的意思是
let-credential…
内容?在“你的firebase身份验证内容”中,我应该包括其他内容还是你的意思是
let-credential…
内容?