Код ошибки входа в систему FBSDK: 308 в Objective-C
Я
"Error Domain=com.фейсбук.пакет SDK.код входа=308 " операция не удалось будет завершено. (com.фейсбук.пакет SDK.ошибка входа 308.)""
при попытке войти в систему с Facebook с моего устройства.
мой код работает на тренажере, но не на реальном устройстве. Кто-нибудь сталкивался с этим кодом ошибки раньше? Я буду более чем счастлив поделиться кодом по запросу.
17 ответов:
одним из решений, по крайней мере для меня, является не запускать на устройстве через отладчик Xcode. Если я запускаю приложение на устройстве вне отладчика, вход в систему Facebook работает нормально. Если я запускаю приложение в sim-карте через отладчик, вход в систему Facebook работает нормально.
только если я запускаю приложение на устройстве через отладчик Xcode, я получаю com.фейсбук.пакет SDK.ошибка входа 308 каждый раз.
Решение ниже работает для iOS9 + работает на Xcode 8, для Swift3. 0
шаги
- Настройка Запуска Facebook
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)
- Исправлена проблема с разрешением связки ключей, как показано на рисунке ниже
у меня была точно такая же проблема и смогли найти решение, изменив информация.файл plist
я добавил все возможные схемы
LSApplicationQueriesSchemes
полный список выглядит так:
<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>
Я получаю то же самое FB SDK 4.6.0 Xcode 7.0 iOS9. Все настройки и инструкции на сайте разработчика facebook были соблюдены. Ни одно из вышеперечисленных решений не сработало для меня. Я нахожу, что поведение хуже, когда вы развертываете устройство в реальном времени и возвращаетесь к консоли Xcode при выполнении процедуры входа в систему. Это очень повезет, если он на самом деле регистрирует вас или нет. Это Кажется вести себя более предсказуемым образом, когда вы просто повторно запустить ваше приложение после развертывания. -Да это на самом деле так!
, когда он решает не войти это приводит к следующей ошибке:
Error Domain=com.facebook.sdk.login Code=308 "(null)"
У меня была такая же проблема, и я исправил ее, обновив учетные данные системы
[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 } } }]; }];
Это решение менее радикально, чем переустановка, и вы гарантируете, что вашим пользователям не придется этого делать. Я предполагаю, что FBSDK 4.6 имеет некоторые конфликты с учетными данными аутентификации FB системы iOS 9.
Edited: через некоторое время тестирование продолжалось, не так часто, как раньше, но это все еще было проблемой, поэтому мы понизили рейтинг до предыдущей версии FB SDK. Надеюсь, кто-то найдет наилучший выход.
немного покопался в коде FBs, и похоже, что это просто проблема с правами.
FB использует брелок для хранения проблемы авторизации во время входа в систему. При возврате он пытается получить значение из Связки ключей и терпит неудачу. Смотрите это так ответ для получения дополнительной информации.
права безопасности могут меняться между профилями подготовки, и, как мы все знаем, сохранение наших профилей и конфигураций сборки и устройств / sims прямо похоже пасти кошек. Это может объяснить, почему люди испытывают такое непоследовательное поведение.
поэтому можно с уверенностью предположить, что в производственной среде все будет работать нормально, и если что-то не работает во время тестирования, вам нужно дважды проверить права на ваши профили подготовки.
в моем случае это было исправлено путем обновления до последней версии FB SDK. 4.10 на данный момент.
я исправил проблему, удалив приложение и переустановив его, и он сразу же сработал.
ошибка, вероятно, связана с iOS 9. Начиная с iOS 9, я думаю, что SDK использует SafariViewController и, похоже, создает проблемы, когда вы уже зарегистрированы.
Я получал ту же ошибку на xcode 7.1 ios 9.1 FB SDK 4.7.1. .
удаление, установка и тестирование без xcode прекрасно работает в первый раз. Это позволит вам снова подключить устройство и запустить его, по крайней мере, пару раз (это кажется немного непоследовательным...)
та же проблема FB SDK 4.5.1 и ни одно из вышеперечисленных решений не работало для меня. Я решил это, добавив Bolts framework в проект с помощью drag & drop (из каталога FacebookSDK)
а затем добавление болтов рамки в appDelegate#import <bolts/bolts.h>
в методе fbsdkdelegate loginButtonWillLogin поставьте это
- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton{ [FBSDKAccessToken setCurrentAccessToken:nil]; return YES;}
обновление до последней версии (4.11) FB SDK исправило это и для меня. Не забудьте очистить ваш проект после обновления, чтобы увидеть, если он работает для вас!
Я был в состоянии получить логин снова работает на iOS9 с SDK 4.6.0 путем добавления нового ключевого файла plist значение
<key>FacebookDisplayName</key> <string>{Your App Name}</string>
Я также предпринял шаги в некоторых других ответах здесь, чтобы реализовать общий экземпляр FBSDKLoginManager ().
я следовал Сурадж Патак С Xcode 9.4.1 и Swift 4.2
добавить в AppDelegate didFinishLaunchingWithOptions
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
добавить в AppDelegate делегат функции
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { return SDKApplicationDelegate.shared.application(app, open: url, options: options) }
разрешить брелок в возможности.