使用 Kotlin 登录 Twitter



大家好,我花了四个小时尝试在文档之后使用我的应用程序实现 Twitter 登录,一切似乎都工作正常,但由于一个或多个原因,当我在 Twitter 授权页面上单击连接或取消时,我得到这个 Toast"不允许此应用程序执行此操作 Twitter"。老实说,我不知道从这里开始。这是我的代码。我知道我做错了什么,谁能指出我正确的方向。

//on create
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val config = TwitterConfig.Builder(this)
.logger(DefaultLogger(Log.DEBUG))
.twitterAuthConfig(TwitterAuthConfig(CONSUMER_KEY,   CONSUMER_SECRET))
.debug(true)
.build()
Twitter.initialize(config)
loginTwitter.setCallback(object : Callback<TwitterSession>() {
override fun success(result: Result<TwitterSession>) {
val session = TwitterCore.getInstance().sessionManager.activeSession
val authToken = session.authToken
val token = authToken.token
val secret = authToken.secret
loginTwitterUser(session)
}
override fun failure(exception: TwitterException) {
Log.d("twitter error: ","Something went wrong, please try again")
}
})
}
//onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int,
data:Intent) {
super.onActivityResult(requestCode, resultCode, data)
loginTwitter.onActivityResult(requestCode, resultCode, data)
}
//the crash log

04-09 23:00:47.967 14143-14143/com.arcadiamobiletv.amtv E/Android运行时:致命 例外:主要 进程: com.arcadiamobiletv.amtv, PID: 14143 java.lang.RuntimeException: Failure Delivery result ResultInfo{who=null, request=140, result=0, data=null} to activity {com.arcadiamobiletv.amtv/com.arcadiamobiletv.amtv.Controllers.LoginActivity}: java.lang.IllegalArgumentException: 指定为 non-null 的参数为 null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data at android.app.ActivityThread.deliverResults(ActivityThread.java:4178) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4221) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1583) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6251) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 由以下原因引起:java.lang.IllegalArgumentException:指定为非 null 的参数为 null:method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数数据 at com.arcadiamobiletv.amtv.Controllers.LoginActivity.onActivityResult(LoginActivity.kt) at android.app.Activity.dispatchActivityResult(Activity.java:6919) at android.app.ActivityThread.deliverResults(ActivityThread.java:4174) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4221) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1583) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6251) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 04-09 23:00:54.243 14143-14154/com.arcadiamobiletv.amtv I/art:输入 while 循环。

经过几天的调试,我发现我的代码没有任何问题,我不得不从Twitter上将我的应用程序列入白名单。其次,我使用这个很棒的图书馆采取了更短的路线,而不是重新发明意志 - https://github.com/jaychang0917/SimpleAuth

最新更新