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)
}
}
}
})
}
}
}
これはFacebookのログインのデフォルトの動作です。これは問題ではありません。 –
私はviewdidload()とログインIBActionの両方でログインを2回呼び出しました。 – YB88