0

Facebookログイン画面が2回表示され、最初のページは通常のログインページですが、2番目のページには "私のアプリ名を既に承認済みです"と表示されます。誰でも私のコードで間違っていることを教えてもらえますか?デフォルトのログインの行動に期待するFacebookログイン表示2回

static func createAndLogin(_ viewController: UIViewController, completion: @escaping (_ success: Bool) -> Void) { 
    let loginManager = FBSDKLoginManager() 
    loginManager.logOut() 
    loginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: viewController) { (result, error) -> Void in 
     if error != nil { 
      print("login FAILED \(error)") 
      completion(false) 
     } else if (result?.isCancelled)!{ 
      print("login is CANCELLED") 

      completion(false) 
     } else if FBSDKAccessToken.current() != nil { 

      let accessToken = FBSDKAccessToken.current().tokenString 
      let credential = FIRFacebookAuthProvider.credential(withAccessToken: accessToken!) 
      FIRAuth.auth()?.signIn(with: credential, completion: { (user, error) in 
       if error != nil { 
        print("SIGN IN WITH FIREBASE FAILED") 
        completion(false) 
       } else { 
        print("YAY LOGIN SUCCESSFULL!!!!") 
        if let mainUser = FIRAuth.auth()?.currentUser?.providerData{ 
         for profile in mainUser { 
          let providerID = profile.providerID 
          let uid = profile.uid // provider-specific UID 
          let name = profile.displayName 
          let email = profile.email 
          let photoUrl = profile.photoURL 
          if (FBSDKAccessToken.current() != nil) { 
           let facebookRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, gender, first_name, last_name, middle_name, picture"]) 

           facebookRequest?.start(completionHandler: { (connection, result, error) in 

            if error == nil { 
             print(result as Any) 
             let data = result as! NSDictionary 
             let gender = data.object(forKey: "gender") as! String 

             var newUser = User(firstName: name!, profileImageURL: ("\(photoUrl!)"), gender: gender) 
             newUser.save() 
             self.currentUserID = uid 

            } 
           }) 
          } 
          completion(true) 

         } 

        } 
       } 
      }) 

     } 

    } 

} 
+1

これはFacebookのログインのデフォルトの動作です。これは問題ではありません。 –

+0

私はviewdidload()とログインIBActionの両方でログインを2回呼び出しました。 – YB88

答えて

0

は、ここに私のログインコードです。よりスムーズなログインを実現するには、loginManager.loginBehavior = .systemAccountを設定してみてください。それは設定したリンゴに与えたFB資格情報でログインしようとしますが、これはアプリケーションの切り替えを全く必要としません。ユーザーが設定でFBにログインしていない場合は、他のより侵入的な方法(webivewまたはFB app)に戻ります。

関連する問題