it-roy-ru.com

iOS - ошибка входа в Facebook - неизвестная ошибка при создании URL (ошибка com.facebook.sdk.core 3)

Я использую логин Facebook для моего приложения iOS, которое разрабатывается для iOS 8 и более поздних версий. (Используется последняя версия Facebook SDK)

Я выполнил все необходимые шаги, описанные в официальном руководстве Facebook. Тем не менее, когда я нажимаю кнопку входа, это дает мне следующую ошибку:

Неизвестная ошибка построения URL (com.facebook.sdk.core error 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
20
Muhammad Sadiq Alvi

Если вы обновили Facebook iOS SDK до версии 4.39.0, существует ошибка, вызывающая эту ошибку. Понижение до 4.38.1 поможет вам решить эту проблему. Не забудьте понизить как FBSDKCoreKit, так и FBSDKLoginKit.

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

Обязательно очистите папку сборки и пересоберите SDK.

update: эта ошибка была исправлена ​​в выпуске 4.39.1 SDK. https://developers.facebook.com/docs/ios/change-log-4x/

63
David Liu

Это ошибка 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'
7
shanezzar

Для меня проблема заключалась в том, что идентификатор приложения Facebook, указанный в CFBundleURLTypes> CFBundleURLSchemes в Info.plist, был указан неправильно.

Я импортировал идентификатор приложения из файла .xcconfig, поэтому его базовое значение изменяется в зависимости от того, использую ли я схему Debug или Release. Однако, когда я распечатывал файл plist, при чтении из файлов xcconfig вокруг идентификатора приложения появлялись ненужные кавычки. Например, где схема URL должна быть fb012345678, это была fb"012345678".

Я попытался жестко закодировать идентификаторы приложений в Info.plist, как указано в руководстве Facebook, и FBSDKLoginButton просто сработал. Safari подошел, чтобы отобразить экран входа в Facebook. Вам не нужно жестко кодировать идентификаторы - просто убедитесь, что они правильно подставлены в Info.plist.

2
Matthew Quiros

В терминале и перейдите к папке проекта используйте 

обновление стручка

обновить до текущей версии 4.39.1

1
Ionz

Я следовал инструкциям response-native-fbsdk, в которых вы должны копировать файлы/папки Framework в проект. Таким образом, приведенный выше подход Cocoapod для меня не сработал.

Что я сделал, так это удалил существующие файлы Framework из проекта (щелкните правой кнопкой мыши элементы Framework -> Удалить -> Да Удалить все), а затем снова добавьте предыдущие версии Frameworks, загрузив их из:

https://developers.facebook.com/docs/ios/downloads/

0
Darko Maksimovic

Я должен был сделать две вещи, чтобы заставить это работать.

1. Понизить стручки до

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

2. Удалите -ObjC из других флагов компоновщика.

Хотя это было предложено на портале разработчиков Facebook. Это генерировало следующую ошибку:

com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Неизвестная ошибка построения URL.

Надеюсь это поможет.

0
shakil080