Подтвердить что ты не робот

FBSDK Вход Код ошибки: 308 в Objective-C

Я продолжаю получать

"Ошибка домена = com.facebook.sdk.login Код = 308" Операция couldnt будет завершена. (ошибка com.facebook.sdk.login 308.) ""

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

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

4b9b3361

Ответ 1

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

Только если я запустил приложение на устройстве с помощью отладчика Xcode, я получаю ошибку com.facebook.sdk.login 308 каждый раз.

Ответ 2

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

Этапы

  • Настройка Facebook Launch

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

  1. Настройка открытого 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 Исправление брелка

Ответ 3

Вы должны включить Keychain Sharing на вкладке Capabilities.

Ответ 4

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

Ответ 5

Я получаю то же самое, что и FB SDK 4.6.0 Xcode 7.0 iOS9. Все настройки и инструкции на сайте разработчика facebook были приведены к письму. Ни один из вышеперечисленных решений не работал у меня. Я нахожу, что поведение хуже, когда вы подключаетесь к устройству в прямом эфире и возвращаетесь к консоли Xcode при выполнении процедуры входа в систему. Это действительно удача, если он фактически регистрирует вас или нет. Кажется, он ведет себя более предсказуемым образом, когда вы просто перезапускаете приложение после его развертывания. -Да, это на самом деле так!

Когда он решает не входить в систему, это приводит к следующей ошибке:

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

Ответ 6

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

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

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

введите описание изображения здесь

Шаг 2. Очистите полученные данные: Выберите Window > Projects: введите описание изображения здесь

а затем выберите Delete: введите описание изображения здесь

Ответ 7

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

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

Отредактировано: после некоторого времени тестирования это продолжалось, не так часто, как раньше, но это все еще проблема, поэтому мы понизились до предыдущей версии FB SDK. Надеюсь, кто-то найдет лучшее решение.

Ответ 8

Было ли некоторое копание в коде FBs, и похоже, что это просто проблема с правами.

FB использует брелок для хранения запроса авторизации во время входа в систему. При возврате он пытается получить значение из брелка и терпит неудачу. Подробнее см. этот ответ..

Права безопасности могут меняться между профилями подготовки, и, как мы все знаем, сохранение наших профилей и построение конфигураций и устройств/симов прямо походит на пастущих кошек. Это может объяснить, почему люди испытывают такое непоследовательное поведение.

Поэтому можно с уверенностью предположить, что в производственной среде все будет работать нормально, а если во время тестирования все не работает, вам необходимо дважды проверить права на профили обеспечения.

Ответ 9

В моем случае это было исправлено путем обновления до последнего FB SDK. 4.10 на данный момент.

Ответ 10

Я исправил проблему, удалив приложение и переустановив его, и он сразу сработал.

Вероятно, ошибка связана с iOS 9. Начиная с iOS 9, я думаю, что SDK использует SafariViewController и, похоже, создает проблемы, когда вы уже зарегистрированы.

Ответ 11

Мне удалось снова войти в систему на iOS9 с SDK 4.6.0, добавив новый ключ/значение plist

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

Исходный код.

Я также предпринял шаги в некоторых других ответах здесь, чтобы реализовать общий экземпляр FBSDKLoginManager().

Ответ 12

Я получал ту же ошибку в xcode 7.1 ios 9.1 FB SDK 4.7.1..

Удаление, установка и тестирование без использования xcode работают отлично в первый раз. Это позволит вам подключиться к устройству и запустить его хотя бы пару раз (кажется, это немного непоследовательно...)

Ответ 13

Такая же проблема FB SDK 4.5.1 и ни одно из вышеперечисленных решений не работало для меня. Я решил это, добавив рамки Bolts для проекта путем перетаскивания (из каталога FacebookSDK)
а затем добавление рамки болтов в appDelegate

    #import <bolts/bolts.h>

Ответ 14

В методе FBSDKDelegate loginButtonWillLogin поместите это

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

Ответ 15

Обновление до последнего (4.11) FB SDK исправило это и для меня. Не забудьте очистить свой проект после обновления, чтобы убедиться, что он работает для вас!

Ответ 16

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

Ответ 17

Я последовал за Сураджем Патхаком с 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. Разрешить связку ключей в возможностях.

Ответ 18

Если вы используете FBSDK 4.38, в FBSDKLoginManager.m есть ошибка с разбором challengeExpected.

Я нашел исправление для Рината-Еникеева:

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

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

Просто поменяй

NSString *challengeExpected = [self loadExpectedChallenge];

в

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

Это решило проблему для меня.

Ответ 19

https://github.com/facebook/facebook-swift-sdk/issues/301

Я тоже сталкиваюсь с такими проблемами, поэтому вышел в интернет, и кто-то разместил это решение, оно работает для меня :)