Es hat gut funktioniert, sich mit logInWithReadPermissions in iOS 8 anzumelden, aber sobald das Update auf iOS 9 erfolgt, wird Safari oder eine modale UIWebView geöffnet.
Hat jemand das gleiche Problem?
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorNative];
[login logInWithReadPermissions:@[@"public_profile",@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
NSLog(@"");
}];
Die Verwendung von 20150708 löste es für mich in iOS 9.
Link zum SDK: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg
Ab jetzt können Sie loginBehavior in FBSDKLoginBehaviorSystemAccount ändern, sodass der FBSDKLoginManager einen von Facebook angemeldeten Benutzer über iOS Facebook-Einstellungen erhält.
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;
In FBSDKLoginManager:
Deklaration : FBSDKLoginBehaviorSystemAccount
Beschreibung : Wenn das Konto für die App nicht verfügbar ist (entweder nicht vom Benutzer konfiguriert oder vom SDK festgelegt), gilt dieses Verhalten als FBSDKLoginBehaviorNative.
Hinweis : Wenn das Konto für die App nicht verfügbar ist (entweder nicht vom Benutzer konfiguriert oder vom SDK festgelegt), gilt dieses Verhalten als FBSDKLoginBehaviorNative.
Wenn Sie das neueste SDK und auch das native Anmeldeverhalten unter iOS 9 verwenden möchten
Bearbeiten Sie die Funktion von FBSDKServerConfiguration.m
, um immer true zurückzugeben
- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
return @YES;
}
Der Rückgriff auf Safari funktioniert immer noch, wenn die Facebook-App nicht installiert ist
Ich folgte dem Dokument hier: https://developers.facebook.com/docs/ios/ios9
nachdem Sie die Punkte 2 und 3 hinzugefügt haben, wechselt meine App zur Anmeldung in die native Facebook-App ...
Ich habe das auch in beiden Changelogs bemerkt:
Facebook SDK für iOS Changelog v4.x
(v4.6.0 - 10. September 2015) Darüber hinaus ermitteln die SDK-Dialogfelder wie Login, Like, Share Dialogs automatisch die beste Benutzeroberfläche auf der Grundlage des Geräts, einschließlich SFSafariViewController anstelle von Safari. Folgen Sie der Anleitung für die Vorbereitung von iOS 9.
Facebook SDK für iOS Changelog v3.x
(v3.24.0 - 10. September 2015) Außerdem ermitteln die SDK-Dialogfelder wie Login, Like, Share Dialogs automatisch die beste Benutzeroberfläche auf der Grundlage des Geräts, einschließlich SFSafariViewController anstelle von Safari. Folgen Sie der Anleitung für die Vorbereitung von iOS 9.
wenn Sie möchten, dass sich ein Modal öffnet und die Facebook-Anmeldedaten getrennt von der Safari- oder Facebook-App abruft, verwenden Sie einfach die neueste Facebook-SDK und legen Sie das Anmeldeverhalten fest
FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorWeb];
dadurch wird der Abmeldeprozess für Benutzer komfortabler und weniger verwirrend.
In Swift Wenn Sie als Anmeldeverhalten "Web" auswählen, öffnen Sie "WebView PopUp". Es gibt keine Login-Weiterleitung an den Safari-Browser
// Try to login with permissions
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
Sie möchten das Standard-Anmeldeverhalten wie folgt ändern
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
login.loginBehavior = FBSDKLoginBehaviorSystemAccount;
[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
if (error)
{
// Process error
}
else if (result.isCancelled)
{
// Handle cancellations
}
else
{
// Now that we are authorized to view public profile and email, request that data get data from 'me'
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"first_name, last_name,email,name,gender,birthday"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
}];
}
}];
wenn der Benutzer nicht seinen Facebook-Benutzernamen und sein Passwort unter der Einstellungen -App eingetragen hat, wird Safari angezeigt.
Verwendung dieser Version mit CocoaPods:
pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'