ios - Firebase 3.x - Facebook Login -


infirebase 2.5.1, used this, , working:

@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 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"] string,    // etc                         ]                     }              })          }    }) } 

now trying achieve in firebase 3.x. however, got confused on should place permissions , stuff

this tried far

@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"] string         ]     }    }) } 

update:

 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 cancelled.")     } else {         // 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 nsnull {                         let newuser = [                             "providerid": user?.providerid,                             "displayname": user?.displayname,                         ]                        userref.setvalue((newuser as! anyobject))                        // perform segue                     }                 })              }          }) 

after login facebook , user data ... have add firebase authentication stuff

 @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 cancelled.")         } else {             // 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!")              }           })         }    }) } 

Comments