IOS - Ошибка входа в Facebook - Неизвестно Ошибка создания URL (ошибка com.facebook.sdk.core 3)
Я использую Facebook для моего приложения iOS, которое разрабатывается для iOS 8 и далее. (Используется последний SDK для Facebook)
Я выполнил все основные шаги, описанные в официальном руководстве Facebook. Однако, когда я нажимаю кнопку входа в систему, она вызывает следующую ошибку:
Неизвестный URL-адрес создания ошибки (ошибка com.facebook.sdk.core 3)
Я проверил, чтобы посмотреть, что я мог сделать неправильно, но все похоже на руководство, и я застрял здесь целый день.
Код для входа в FB Делегат:
class FBLoginDelegate: NSObject, FBSDKLoginButtonDelegate {
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!){
if(error == nil){
print("Logged In from Btn")
}else{
print("Error: \(error.localizedDescription)") //Here it gives the error
}
}
}
Код для входа в систему FB:
var fbLoginBtnDelegate = FBLoginDelegate()
let fbBtnWidth = self.view.bounds.width - (self.fbContainerLeftConstraint.constant + self.fbContainerRightConstraint.constant)
let fbLoginButton = FBSDKLoginButton(frame: CGRectMake(0,0,fbBtnWidth,self.fbButtonContainer.bounds.size.height))
self.fbButtonContainer.addSubview(fbLoginButton)
fbLoginButton.readPermissions = ["public_profile", "user_friends", "email", "user_birthday"]
fbLoginButton.delegate = fbLoginBtnDelegate
Ответы
Ответ 1
Если вы обновили Facebook iOS SDK до версии 4.39.0, существует ошибка, вызывающая эту ошибку. Понижение до 4.38.1 поможет вам решить эту проблему. Убедитесь, что понизили FBSDKCoreKit и FBSDKLoginKit.
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
Обязательно очистите папку сборки и пересоберите SDK.
обновление: эта ошибка была исправлена в выпуске 4.39.1 SDK. https://developers.facebook.com/docs/ios/change-log-4x/
Ответ 2
Это ошибка SDK Facebook в версии 4.39.0, которая вызывает эту ошибку. Чтобы устранить эту ошибку, просто понизьте CoreKit и LoginKit до 4.38.0, очистите производные данные, а также очистите папку сборки (CMD + OPTION + SHIFT + K). Тогда как 4.38.1 также работает отлично.
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
Если вы используете FacebookCore и FacebookLogin, сделайте следующее.
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
Ответ 3
Для меня проблема заключалась в том, что идентификатор приложения Facebook, указанный в CFBundleURLTypes
> CFBundleURLSchemes
в Info.plist
были неправильно указаны.
Я импортировал идентификатор приложения из файла .xcconfig
, чтобы его базовое значение менялось в зависимости от того, запущена ли схема Debug
или Release
. Однако, когда я распечатывал файл plist, во время чтения из файлов xcconfig
были ненужные кавычки вокруг идентификатора приложения. Например, где схема URL должна быть fb012345678
, она была fb"012345678"
.
Я пробовал жестко кодировать идентификаторы приложений правильно в Info.plist
, как указано в руководстве Facebook, и FBSDKLoginButton
только что работал. Safari появился, чтобы отобразить экран входа в Facebook. Вам не нужно жестко указывать идентификаторы, но просто убедитесь, что они правильно заменены в Info.plist
.
Ответ 4
Оно работает ! Спасибо @Дэвид Луи
Ответ 5
это исходный код ошибки:
NSURL *URL = [[NSURL alloc] initWithString:[NSString stringWithFormat:
@"%@://%@%@%@",
scheme ?: @"",
host ?: @"",
path ?: @"",
queryString ?: @""]]
значение:
NSString stringWithFormat:@"%@://%@%@%@",scheme ?: @"",host ?: @"", path ?: @"", queryString ?: @""] __NSCFString * @"https://m.facebook.com/v3.2/dialog/oauth?auth_type=rerequest&client_id=1980908518654449&default_audience=friends&display=touch&e2e={%22init%22%3A517.53126520800004}&fbapp_pres=1&redirect_uri=fb1980908518654449%3A%2F%2Fauthorize%2F&response_type=token%2Csigned_request&return_scopes=true&scope=public_profile&sdk=ios&sdk_version=4.39.0&state={%22challenge%22%3A%22rBz0jswYmI27FH41NplypbJsmc0%253D%22%2C%220_auth_logger_id%22%3A%22F3B2C127-361E-4668-8650-72DCBBECE93C%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22}"
это ошибка URL !!!!!
Ответ 6
Я следовал инструкциям response-native-fbsdk, в которых вы должны копировать файлы/папки Framework в проект. Таким образом, приведенный выше подход Cocoapod для меня не сработал.
Что я сделал, так это удалил существующие файлы Framework из проекта (щелкните правой кнопкой мыши элементы Framework → Delete → Yes Remove all), а затем снова добавьте предыдущие версии Frameworks, загрузив их из:
https://developers.facebook.com/docs/ios/downloads/
Ответ 7
В терминале и перейдите к папке проекта используйте
обновление стручка
обновить до текущей версии 4.39.1