FBSDK Вход Код ошибки: 308 в Objective-C
Я продолжаю получать
"Ошибка домена = com.facebook.sdk.login Код = 308" Операция couldnt будет завершена. (ошибка com.facebook.sdk.login 308.) ""
при попытке войти в систему Facebook с моего устройства.
Мой код работает на симуляторе, но не на самом устройстве. Кто-нибудь раньше сталкивался с этим кодом ошибки? Я буду более чем счастлив поделиться кодом по запросу.
Ответы
Ответ 1
Одним из решений, по крайней мере для меня, является не запуск на устройстве через отладчик Xcode. Если я запустил приложение на устройстве за пределами отладчика, то входе в Facebook работает нормально. Если я запустил приложение в симу с помощью отладчика, то Facebook будет работать нормально.
Только если я запустил приложение на устройстве с помощью отладчика Xcode, я получаю ошибку com.facebook.sdk.login 308 каждый раз.
Ответ 2
Решение ниже работает для iOS9 +, работающего на Xcode 8, для Swift3.0
Этапы
- Настройка Facebook Launch
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
-
Настройка открытого 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)
- Исправлена проблема с разрешением брелка, как показано на рисунке ниже.
![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
-
Добавить в 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)
}
-
Разрешить связку ключей в возможностях.
Ответ 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
Я тоже сталкиваюсь с такими проблемами, поэтому вышел в интернет, и кто-то разместил это решение, оно работает для меня :)