Код ошибки входа в систему FBSDK: 308 в Objective-C


Я

"Error Domain=com.фейсбук.пакет SDK.код входа=308 " операция не удалось будет завершено. (com.фейсбук.пакет SDK.ошибка входа 308.)""

при попытке войти в систему с Facebook с моего устройства.

мой код работает на тренажере, но не на реальном устройстве. Кто-нибудь сталкивался с этим кодом ошибки раньше? Я буду более чем счастлив поделиться кодом по запросу.

17   56  

17 ответов:

одним из решений, по крайней мере для меня, является не запускать на устройстве через отладчик Xcode. Если я запускаю приложение на устройстве вне отладчика, вход в систему Facebook работает нормально. Если я запускаю приложение в sim-карте через отладчик, вход в систему Facebook работает нормально.

только если я запускаю приложение на устройстве через отладчик Xcode, я получаю com.фейсбук.пакет SDK.ошибка входа 308 каждый раз.

Решение ниже работает для iOS9 + работает на Xcode 8, для Swift3. 0

шаги

  1. Настройка Запуска Facebook

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. Исправлена проблема с разрешением связки ключей, как показано на рисунке ниже

iOS 9 Keychain fix

необходимо включить общий доступ к связке ключей на вкладке возможности.

у меня была точно такая же проблема и смогли найти решение, изменив информация.файл 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)"

мое решение на Xcode7.1, Swift2. 0

Шаг 1. Очистите папку сборки:option + command + K

или: выберите Product>Clean

enter image description here

Шаг 2. Очистите производные данные: выберите Window>Projects: enter image description here

и выберите Delete: enter image description here

У меня была такая же проблема, и я исправил ее, обновив учетные данные системы

[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 ().

чтобы решить эту проблему, вам нужно просто включить "Keychain Sharing"в возможностях.

я следовал Сурадж Патак С Xcode 9.4.1 и Swift 4.2

  1. добавить в AppDelegate didFinishLaunchingWithOptions

    SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
    
  2. добавить в AppDelegate делегат функции

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return SDKApplicationDelegate.shared.application(app, open: url, options: options)
    }
    
  3. разрешить брелок в возможности.