2016-08-22 7 views
1

Ich versuche, eine Facebook-Login-Authentifizierung zu erstellen, aber ich habe Probleme mit, wenn der Benutzer die Schaltfläche klickt öffnet den Browser und ich melde mich, aber wenn ich mich anmelde und gebe Erlaubnis nichts passiert und es schließt nicht den Browser und gehe zurück zur App. Die andere Sache ist, wenn ich die App wieder öffne und überprüfe das Token, das es Null zurückgibt, obwohl es bereits eingeloggt sein sollte?Facebook Login Button nicht nach Login

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 
    if ((error) != nil) 
    { 
     // Process error 
    } 
    else if result.isCancelled { 
     // Handle cancellations 
    } 
    else { 
     // If you ask for multiple permissions at once, you 
     // should check if specific permissions missing 
     if result.grantedPermissions.contains("email") && result.grantedPermissions.contains("public_profile") && result.grantedPermissions.contains("user_friends") 
     { 

     } 
    } 

} 

ViewDidLoad

//Check for access 
    if (FBSDKAccessToken.current() != nil) { 
     print("Logged in") 
    } else { 
     self.performSegue(withIdentifier: "GoToIntro", sender: self) 
    } 

AppDelegate

private func application(application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject?) -> Bool { 


    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) 
} 

Plist

<dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb1645871657973243</string> 
     </array> 
    </dict> 
</array> 
<key>FacebookAppID</key> 
<string>1645871657973243</string> 
<key>FacebookDisplayName</key> 
<string>testy</string> 
<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>fbapi</string> 
    <string>fb-messenger-api</string> 
    <string>fbauth2</string> 
    <string>fbshareextension</string> 
</array> 
+0

Haben Sie die AppDelegate-Methoden für die FB-Integration hinzugefügt? FB verwendet URL Schemes, um zwischen Browser und App zu kommunizieren, weshalb Sie die App Delegate Methoden benötigen – NSNoob

+0

Sie müssen auch FB Schemata in Ihrer App registrieren plist, damit es funktioniert – NSNoob

+0

Ich habe bereits installiert plist –

Antwort

1

Ich habe die FBSDK mit iOS 10 und Swift 3 vor ein paar Tagen implementiert und es war nicht sehr glatt. Das große Problem für mich war wahrscheinlich, was mit dir passiert - das neue SDK möchte die Facebook App auf dem iPhone öffnen, aber der Simulator hat es natürlich nicht. Die Prüfung dafür ist einfach - der folgende Fehler:

-canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)" 

ich dieses Problem für ein paar Tage hatte, bis ich sah mich um und dachte, es mit dem Apple-Entwickler-Forum aus. Ein weiterer möglicher Grund ist, dass Sie die AppDelegate-Funktionen nicht ordnungsgemäß implementiert haben. Die alte FBSDKApplicationDelegate.sharedInstance(). Application (...) -Funktion ist veraltet. Nach einiger Suche kam ich auf die folgende Implementierung auf, die für mich funktioniert:

func application(_ app: UIApplication, open url: URL, options: [String : AnyObject] = [:]) -> Bool { 
    FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, 
                  annotation: nil) 
    return true 
} 
0

In Ihrer ViewDidLoad Methode müssen Sie setzen:

yourLoginFacebookButton.delegate = self 

in Ihrer Login-Klasse müssen Sie diese Implementierung setzen:

FBSDKLoginButtonDelegate