Несколько месяцев назад я интегрировал Firebase + Twitter OAuth в свое приложение для Android.Недавно я проводил рефакторинг приложения и заметил, что аутентификация Firebase + Twitter, которая была должным образом протестирована ранее, больше не работает на всех моих устройствах и с разными учетными записями.С тех пор я пробовал многочисленные обходные пути, такие как:
- полностью заново создать приложение в консоли Twitter Dev;
- set ONLY twittersdk: // в качестве URL для обратного вызова в консоли Twitter Dev;
- еще раз проверьте все руководства Twitter / Firebase и убедитесь, что в проекте есть весь необходимый код;
- инициализируйте Twitter SDK различными способами(см. ниже) и т. д.
Я не вижу смысла перечислять здесь код, связанный с аутентификацией, поскольку он очень похож на общие примеры и фрагменты, такие как https://firebase.google.com/docs/auth/android/twitter-login?authuser=0 и https://github.com/twitter/twitter-kit-android/wiki/Getting-Started и https://github.com/twitter/twitter-kit-android/wiki/Log-In-with-Twitter.И, конечно же, все это было проверено, когда работала аутентификация Twitter + Firebase.
Исключения, которые я получаю, зависят от способа инициализации Twitter SDK.
Например, когда я инициализирую Twitter в приложенииonCreate()
как это:
Twitter.initialize(this)
Я получаю
com.google.firebase.FirebaseException: An internal error has occurred.
[ Failed to get successful verify_credentials response:{"errors":[{"code":32,"message":"Could not authenticate you."}]} ]
at com.google.firebase.auth.api.internal.zzds.zzb(Unknown Source)
at com.google.firebase.auth.api.internal.zzew.zza(Unknown Source)
at com.google.firebase.auth.api.internal.zzeo.zzc(Unknown Source)
at com.google.firebase.auth.api.internal.zzep.onFailure(Unknown Source)
at com.google.firebase.auth.api.internal.zzdy.dispatchTransaction(Unknown Source)
at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:453)
Кроме того, когда я инициализирую Twitter в приложении onCreate()
, как это:
val config = TwitterConfig.Builder(this)
.logger(DefaultLogger(Log.DEBUG))
.twitterAuthConfig(TwitterAuthConfig("CONSUMER_KEY", "CONSUMER_SECRET"))
.debug(true)
.build()
Twitter.initialize(config)
Iget
E/Twitter: Authorization completed with an error
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed.
at com.twitter.sdk.android.core.identity.AuthHandler.handleOnActivityResult(AuthHandler.java:98)
at com.twitter.sdk.android.core.identity.TwitterAuthClient.onActivityResult(TwitterAuthClient.java:143)
at com.twitter.sdk.android.core.identity.TwitterLoginButton.onActivityResult(TwitterLoginButton.java:131)
at com.kkaun.mediator.ui.user.login.providers.TwitterSignInActivity.onActivityResult(TwitterSignInActivity.kt:90)
at android.app.Activity.dispatchActivityResult(Activity.java:6572)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3710)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3757)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5452)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
W/TwitterSignInActivity: twitterLogin:failure
com.twitter.sdk.android.core.TwitterAuthException: Authorize failed.
at com.twitter.sdk.android.core.identity.AuthHandler.handleOnActivityResult(AuthHandler.java:98)
at com.twitter.sdk.android.core.identity.TwitterAuthClient.onActivityResult(TwitterAuthClient.java:143)
at com.twitter.sdk.android.core.identity.TwitterLoginButton.onActivityResult(TwitterLoginButton.java:131)
at com.kkaun.mediator.ui.user.login.providers.TwitterSignInActivity.onActivityResult(TwitterSignInActivity.kt:90)
at android.app.Activity.dispatchActivityResult(Activity.java:6572)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3710)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3757)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5452)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Как мы все знаем, Twitter прекратил поддержку Twitter Kit 31 октября 2018 года, как упомянуто здесь https://blog.twitter.com/developer/en_us/topics/tools/2018/discontinuing-support-for-twitter-kit-sdk.html. Так что мне интересно, может ли этот факт быть причиноймоя проблема?