wake-up-neo.net

Facebook Login - iOS 9 - Ohne Safari

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(@"");
}];
31
user4200570

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

9
user4200570

Anscheinend gibt es keine Möglichkeit, das bisherige Verhalten mithilfe neuester FB-SDKs in iOS9 + abzurufen. Sie können dazu ein altes SDK verwenden. Hier ist eine Antwort von Facebook auf diese Frage:  enter image description here

39
Lucas Brito

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.

15
saltwat5r

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

2
vk.edward.li

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 ...

1
dondonhk

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.

1
Justin Whitney

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.

1
smoothumut

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
0
Krishna Gawade

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.

0
user1709076

Verwendung dieser Version mit CocoaPods:

pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'
0
Tai Le