0

У меня есть логин facebook, который использует firebase для аутентификации процесса. Однако после ввода данных о регистрации и подтверждения нажмите. Он вернется на страницу входа и снова запустит страницу входа в facebook. Затем снова нажмите подтверждение. На нем отобразится «User Cancel Login».Быстрое открытие диалогового окна входа в Firebase Facebook 2 раза

Я не знаю, почему это происходит в 2 раза и, когда я нажимаю кнопку подтверждения будет отображаться «Пользователь Отменить Войти»

func loginButton(FbLoginBtn: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
    let FbloginManager = FBSDKLoginManager() 
    FbloginManager.logInWithReadPermissions(["email","public_profile", "user_location", "user_hometown","user_friends"],fromViewController: self, handler: { (result, error) in 


    if let error = error { 
     print(error.localizedDescription) 
      return 
    }else if(result.isCancelled) { 

     print("User Cancel Login") 

    }else{ 
     let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString) 
     print("User\(self.user?.displayName) login successful") 
     AppState.instance.signedIn = true 
     if AppState.instance.signedIn == false{ 
     self.firebaseLogin(credential) 
     //self.createFirebaseUser() 
     self.performSegueWithIdentifier(SEGUE_LOGIN, sender: nil) 
    } 
    } 
    }) 
} 

ответ

0

Для меня этот код работает:

@IBAction func btnFBLoginPressed(sender: AnyObject) { 

    self.comeFromFB = true 

    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 

    var id:String = "" 
    var urlPhoto:String = "" 

    fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self){ (result, error) -> Void in 
     if let error = error 
     { 
      print(error) 
      return 
     } 
     else 
     { 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if (!result.isCancelled) 
      { 
       if(fbloginresult.grantedPermissions.contains("email")) 
       { 
        if((FBSDKAccessToken.currentAccessToken()) != nil){ 
         FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in 

          let bUserFacebookDict = result as! NSDictionary 

          id = bUserFacebookDict["id"]! as! String 
          urlPhoto = "https://graph.facebook.com/"+id+"/picture?width=500&height=500" 

          let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString) 
          FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in 

          self.currentUser.setCurrentUserState(user!.uid, _firstName: bUserFacebookDict["first_name"]! as! String, _name: bUserFacebookDict["last_name"]! as! String, _urlPhoto: urlPhoto, _email:bUserFacebookDict["email"]! as! String, _connected:true) 


          } 
         }) 
        } 
       } 
      } 

     } 
    } 
} 

Тогда Я добавляю слушателя в метод ViewDidAppear с выполнением segue после «подключенного» состояния.