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.
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.
Die folgende Lösung funktioniert für iOS9 + unter Xcode 8 für Swift3.0
Die Schritte sind
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
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)
Sie sollten Keychain Sharing auf der Registerkarte Capabilities aktivieren.
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>
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)"
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.
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.
In meinem Fall wurde dies durch ein Update auf das neueste FB SDK behoben. 4.10 im Moment.
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!
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 ...)
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
Nur ändern
NSString *challengeExpected = [self loadExpectedChallenge];
zu
NSString *challengeExpected = [[self loadExpectedChallenge] stringByReplacingOccurrencesOfString:@"+" withString:@" "];
Das hat das Problem für mich gelöst.
Um dieses Problem zu beheben, müssen Sie lediglich "Schlüsselbund-Freigabe" in den Funktionen aktivieren.
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>
Ich habe auch die Schritte in einigen anderen Antworten ausgeführt, um eine gemeinsame Instanz von FBSDKLoginManager () zu implementieren.
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.
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>
LoginButtonWillLogin hat dies in der FBSDKDelegate-Methode angegeben
- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton{
[FBSDKAccessToken setCurrentAccessToken:nil];
return YES;}
Ich folgte Suraj Pathak mit Xcode 9.4.1 und Swift 4.2
Zu AppDelegate hinzufügen didFinishLaunchingWithOptions
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
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)
}
Schlüsselbund in Funktionen zulassen.