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

Ошибка FBSDKLoginManager с кодом ошибки - 308

Мы используем FBSDKLoginManager с нашим собственным пользовательским интерфейсом для входа в facebook. Однако иногда сбой входа происходит с кодом ошибки 308.

В соответствии с документами причина - FBSDKLoginBadChallengeString, я искал по всему Интернету, чтобы узнать причину этого, но не повезло.

Любое объяснение того, почему эта ошибка возникает и как ее решить?

4b9b3361

Ответ 1

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

см. мой ответ здесь fooobar.com/questions/99627/...

(У меня нет репутации комментариев, поэтому приношу извинения сообществу, если этот ответ не относится к категории "Ответ" )

Ответ 2

Вот как я воспроизвел и решил ошибку com.facebook.sdk.login 308.

Пользователь A регистрируется в Facebook, затем записывается в мое приложение, наконец выходит из моего приложения, используя популярный:

func logOutFromFacebook(){

   if (FBSDKAccessToken.currentAccessToken() != nil){

           let loginManager = FBSDKLoginManager()
           loginManager.logOut()
    }
}

Теперь пользователь B регистрируется в Facebook, регистрируется в моем приложении и появляется ошибка 308. com.facebook.sdk.login.

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

Решение, решившее эту проблему, состояло в использовании FBSDKAccessToken.setCurrentAccessToken(nil), как показано ниже:

func logOutFromFacebook(){

   if (FBSDKAccessToken.currentAccessToken() != nil){

     FBSDKAccessToken.setCurrentAccessToken(nil)

        By itself I had no use for it, maybe you might want to uncomment.
        //   let loginManager = FBSDKLoginManager()
        //   loginManager.logOut()

    }
}

Надеюсь, это поможет кому-то!

Ответ 3

Как устранить проблему в iOS10 для Facebook

Error OSStatus -10814 occures when canOpenURL: can't find any application, that can open this URL (actually, Facebook trying to find their application by calling canOpenURL: with argument "fbauth2:/"). Printing happens inside of function, so you can't do anything with that. But if you will run your application on device with installed Facebook app, you will not see this error.

Error 308 occures because of the situation, when value, stored in keychain is not equal to value, that is stored in facebook completion parameters (for more information you can check -[FBSDKLoginManager completeAuthentication:expectChallenge:]).

It happens because Apple changed the way of working with keychain in iOS 10. To fix this issue you simply should go to **Targets**->**Capabilities** and **enable keychain sharing** (it enables access to keychain for your app): 

После этого вы можете получить данные для Facebook.

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

Спасибо Mandeep Singh