【问题标题】:Failed to get request token method POST must have a request body获取请求令牌方法失败 POST 必须有请求正文
【发布时间】:2015-08-18 00:25:18
【问题描述】:

我正在尝试在我的 android 应用中实现 twitter 登录。 我已按照说明进行操作 (https://dev.twitter.com/twitter-kit/android/twitter-login)。

如果我安装了 twitter 应用程序一切正常,但如果我没有在我点击登录按钮时出现以下异常。 它应该打开一个请求登录的 web 视图。

有什么提示吗?

06-02 11:22:23.531  24124-24124/it.quepasa W/dalvikvm: VFY: unable to resolve virtual method 39779: Lretrofit/client/OkClient;.openConnection (Lretrofit/client/Request;)Ljava/net/HttpURLConnection;
06-02 11:22:23.611  24124-24124/it.quepasa E/Twitter﹕ Failed to get request token
com.twitter.sdk.android.core.TwitterApiException: method POST must have a request body.
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:400)
        at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
        at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
        at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at retrofit.Platform$Android$2$1.run(Platform.java:142)
        at java.lang.Thread.run(Thread.java:838)
06-02 11:22:23.686  24124-24124/it.quepasa E/Twitter﹕ Authorization completed with an error
com.twitter.sdk.android.core.TwitterAuthException: Failed to get request token
        at com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:78)
        at com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:198)
        at com.twitter.sdk.android.core.Callback.failure(Callback.java:28)
        at retrofit.CallbackRunnable$2.run(CallbackRunnable.java:53)
        at android.os.Handler.handleCallback(Handler.java:800)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5370)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)

这是我的代码:

AndroidManifest.xml:

    <meta-data
        android:name="io.fabric.ApiKey"
        android:value="XXXXXXXX" />

MainActivity.java:

    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new Twitter(authConfig), new Crashlytics()); //I've tried without crashlytics, same problem. Crashlytics works..

LoginActivity.java:

    loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_buttons);
    loginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            Log.d(TAG, "Success");
        }

        @Override
        public void failure(TwitterException exception) {
            Log.d(TAG, "Failure");
        }
    });

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        loginButton.onActivityResult(requestCode, resultCode, data);
    }

【问题讨论】:

    标签: java android twitter twitter-fabric


    【解决方案1】:

    我找到了解决办法:

    这是 okhttp 2.4 的重大变化,恢复到 2.3 解决了我的问题。

    见:

    https://github.com/square/okhttp/issues/751

    https://github.com/square/retrofit/issues/854

    【讨论】:

    • 也好像在okhttp 2.5中修复了。
    • 这是什么意思?我只使用compile('com.twitter.sdk.android:twitter:1.10.0@aar')..?我该怎么办?
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2011-05-27
    • 2017-06-23
    • 1970-01-01
    • 2013-05-02
    • 2013-10-22
    相关资源
    最近更新 更多