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