it-swarm.com.de

Fehlercode für die FBSDK-Anmeldung: 308 in Objective-C

Ich bekomme immer weiter 

"Fehler Domain = com.facebook.sdk.login Code = 308" Die Operation konnte nicht ausgeführt werden auszufüllen. (com.facebook.sdk.login Fehler 308.) ""

beim Versuch, sich mit Facebook von meinem Gerät aus anzumelden.

Mein Code funktioniert auf dem Simulator, aber nicht auf einem tatsächlichen Gerät. Hat jemand diesen Fehlercode schon einmal gefunden? Ich werde mehr als glücklich sein, Code auf Anfrage zu teilen.

57

Eine Lösung, zumindest für mich, ist, nicht über den Xcode-Debugger auf dem Gerät zu laufen. Wenn ich die App auf einem Gerät außerhalb des Debuggers starte, funktioniert das Facebook-Login einwandfrei. Wenn ich die App in der Sim über den Debugger starte, funktioniert das Facebook-Login einwandfrei.

Nur wenn ich die App über den Xcode-Debugger auf dem Gerät ausführen kann, erhalte ich jedes Mal den Fehler com.facebook.sdk.login 308.

44
user3633673

Die folgende Lösung funktioniert für iOS9 + unter Xcode 8 für Swift3.0

Die Schritte sind

  1. Einrichten des Facebook-Starts

FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

  1. Setup Open Url

    guard let source = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String else { return false } let annotation = options[UIApplicationOpenURLOptionsAnnotationKey] as? String return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)

  2. Korrigieren Sie das Problem mit der Schlüsselbundberechtigung wie in der Abbildung unten dargestellt

iOS 9 Keychain fix

49
Suraj Pathak

Sie sollten Keychain Sharing auf der Registerkarte Capabilities aktivieren.

42
Di B.

Ich hatte genau das gleiche Problem und konnte durch das Ändern der Info.plist die Lösung finden

Ich habe alle möglichen Schemata zu LSApplicationQueriesSchemes hinzugefügt.

Die vollständige Liste sieht folgendermaßen aus:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fbapi20130214</string>
    <string>fbapi20130410</string>
    <string>fbapi20130702</string>
    <string>fbapi20131010</string>
    <string>fbapi20131219</string>
    <string>fbapi20140410</string>
    <string>fbapi20140116</string>
    <string>fbapi20150313</string>
    <string>fbapi20150629</string>
    <string>fbauth</string>
    <string>fbauth2</string>
    <string>fb</string>
    <string>fb-messenger-api20140430</string>
    <string>fb-messenger-platform-20150128</string>
    <string>fb-messenger-platform-20150218</string>
    <string>fb-messenger-platform-20150305</string>
    <string>fb-messenger-api</string>
    <string>fbshareextension</string>
</array>
26
Stas Zhukovskiy

Ich bekomme genau das gleiche FB SDK 4.6.0 Xcode 7.0 iOS9. Alle Setups und Anweisungen auf der Facebook-Entwicklerseite wurden genauestens befolgt. Keine der oben genannten Lösungen hat bei mir funktioniert. Ich stelle fest, dass das Verhalten schlimmer ist, wenn Sie live auf dem Gerät bereitstellen und während des Anmeldevorgangs eine Rückmeldung an die Xcode-Konsole senden. Es ist wirklich ein Glücksfall, wenn Sie sich tatsächlich anmelden oder nicht. Es scheint sich vorhersehbarer zu verhalten, wenn Sie Ihre App nach der Bereitstellung einfach kalt starten. -Ja das ist in der Tat der Fall!

Wenn die Anmeldung fehlschlägt, tritt der folgende Fehler auf:

Error Domain=com.facebook.sdk.login Code=308 "(null)"
14
Geoff H

Meine Lösung zu Xcode7.1, Swift2.0

Schritt 1. Bereinigen Sie Ihren Buildordner: option + command + K

oder: Wählen Sie Product> Clean

 enter image description here

Schritt 2. Bereinigen Sie Ihre abgeleiteten Daten: Wählen Sie Window> Projects:  enter image description here

und dann Delete:  enter image description here

5
Tai Le

Ich hatte das gleiche Problem und es wurde behoben, dass die Anmeldeinformationen des Systems aktualisiert wurden 

[FBSDKLoginManager renewSystemCredentials:^(ACAccountCredentialRenewResult result, NSError *error) {

    [[[YourAuthManager manager] facebookLoginManager] logInWithReadPermissions:@[@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

        if (error) {
            // Handle 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 containsObject:@"email"]) {
                // Do work
            }
        }
    }];
}];

Diese Lösung ist weniger radikal als eine Neuinstallation und Sie stellen sicher, dass Ihre Benutzer dies nicht tun müssen. Meine Vermutung ist, dass FBSDK 4.6 einige Konflikte mit den Authentifizierungsnachweisen für iOS 9-System-FBs aufweist. 

Bearbeitet: Nach einiger Zeit des Testens passierte es immer wieder, nicht so oft wie zuvor, aber es war immer noch ein Problem. Daher haben wir auf eine frühere Version des FB SDK heruntergestuft. Hoffentlich findet jemand eine bessere Lösung.

4
edsancha

Ich habe etwas in FBs Code herumgegraben und es sieht so aus, als wäre dies einfach ein Berechtigungsproblem.

FB verwendet den Schlüsselbund zum Speichern einer Autorisierungsaufforderung während der Anmeldung. Bei der Rückkehr wird versucht, den Wert aus dem Schlüsselbund abzurufen und schlägt fehl. Siehe diese SO Antwort für weitere Informationen.

Sicherheitsberechtigungen können sich zwischen den Bereitstellungsprofilen ändern. Wie wir alle wissen, ist es wie das Hüten von Katzen, wenn wir unsere Profile und Build-Konfigurationen und Geräte/Sims gerade halten. Dies könnte erklären, warum Menschen so inkonsistentes Verhalten erfahren.

Es kann daher davon ausgegangen werden, dass in einer Produktionsumgebung alles einwandfrei funktioniert. Wenn während des Tests Probleme auftreten, müssen Sie die Berechtigungen in den Bereitstellungsprofilen erneut überprüfen.

4
kball

In meinem Fall wurde dies durch ein Update auf das neueste FB SDK behoben. 4.10 im Moment.

1
AlexeyVMP

Ein Update auf das neueste (4.11) FB SDK hat dieses Problem auch für mich behoben. Vergiss nicht, dein Projekt nach dem Update zu bereinigen, um zu sehen, ob es für dich funktioniert!

0
SlickDev

Ich habe den gleichen Fehler auf xcode 7.1 ios 9.1 FB SDK 4.7.1 erhalten. .

Das Deinstallieren, Installieren und Testen ohne Xcode funktioniert zum ersten Mal einwandfrei. Dadurch können Sie das Gerät wieder einstecken und es mindestens ein paar Mal ausführen (es scheint etwas inkonsistent zu sein ...)

0
jonypz

Wenn Sie FBSDK 4.38 verwenden, liegt ein Fehler beim Analysieren von challengeExpected in FBSDKLoginManager.m vor.

Ich habe einen Hotfix von rinat-enikeev dafür gefunden:

https://github.com/facebook/facebook-sdk-Swift/issues/286

https://github.com/facebook/facebook-objc-sdk/pull/922/commits/bcf7f787e92320a6322fb3f6130fdc3815bbafb7

Nur ändern

NSString *challengeExpected = [self loadExpectedChallenge];

zu

NSString *challengeExpected = [[self loadExpectedChallenge] stringByReplacingOccurrencesOfString:@"+" withString:@" "];

Das hat das Problem für mich gelöst.

0
user3674055

Um dieses Problem zu beheben, müssen Sie lediglich "Schlüsselbund-Freigabe" in den Funktionen aktivieren.

0
Bhavesh Patel

Ich konnte mich wieder mit iOS9 mit SDK 4.6.0 anmelden, indem ich den neuen plist-Schlüssel/Wert hinzufügte

<key>FacebookDisplayName</key>
<string>{Your App Name}</string>

Quellcode .

Ich habe auch die Schritte in einigen anderen Antworten ausgeführt, um eine gemeinsame Instanz von FBSDKLoginManager () zu implementieren.

0
swift taylor

Ich habe das Problem behoben, indem ich die App deinstalliert und erneut installiert habe. Das hat sofort funktioniert.

Der Fehler ist wahrscheinlich auf iOS 9 zurückzuführen. Seit iOS 9 verwendet das SDK SafariViewController und scheint Probleme zu verursachen, wenn Sie bereits angemeldet sind.

0
Gabriel Cartier

Gleiches Problem FB SDK 4.5.1 und keine der oben genannten Lösungen funktionierte für mich ... Ich löste das Problem, indem ich das Bolts-Framework per Drag & Drop zum Projekt hinzufügte (aus dem FacebookSDK-Verzeichnis).
und fügen Sie dann Schraubenrahmen zu appDelegate hinzu

    #import <bolts/bolts.h>
0
Kong Hantrakool

LoginButtonWillLogin hat dies in der FBSDKDelegate-Methode angegeben

- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton{
[FBSDKAccessToken setCurrentAccessToken:nil];
return YES;}
0
manu_inup

Ich folgte Suraj Pathak mit Xcode 9.4.1 und Swift 4.2

  1. Zu AppDelegate hinzufügen didFinishLaunchingWithOptions

    SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
    
  2. Zu AppDelegate-Delegatfunktion hinzufügen

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return SDKApplicationDelegate.shared.application(app, open: url, options: options)
    }
    
  3. Schlüsselbund in Funktionen zulassen.

0
user3736373