【问题标题】:Twitter issue in android:: com.twitter.sdk.android.core.TwitterApiException: HTTP request failed, Status: 400android:: com.twitter.sdk.android.core.TwitterApiException 中的 Twitter 问题:HTTP 请求失败,状态:400
【发布时间】:2017-08-09 08:14:17
【问题描述】:

您能否解决在我的 Android 应用中集成 twitter 登录时遇到的问题。

这是问题:

Twitter:获取请求令牌失败 com.twitter.sdk.android.core.TwitterApiException:HTTP 请求失败,状态:400 在 com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42) 在 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 在 android.os.Handler.handleCallback(Handler.java:815) 在 android.os.Handler.dispatchMessage(Handler.java:104) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5643) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Twitter:授权完成但出现错误 com.twitter.sdk.android.core.TwitterAuthException:获取请求令牌失败 在 com.twitter.sdk.android.core.identity.OAuthController$1.failure(OAuthController.java:94) 在 com.twitter.sdk.android.core.internal.oauth.OAuth1aService$1.failure(OAuth1aService.java:191) 在 com.twitter.sdk.android.core.Callback.onResponse(Callback.java:42) 在 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 在 android.os.Handler.handleCallback(Handler.java:815) 在 android.os.Handler.dispatchMessage(Handler.java:104) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5643) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

这是我的代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TwitterConfig config = new TwitterConfig.Builder(this)
            .logger(new DefaultLogger(Log.DEBUG))
            .twitterAuthConfig(new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET))
            .debug(true)
            .build();
    Twitter.initialize(config);
    setContentView(R.layout.layout_list);

    nameit = (TextView) findViewById(R.id.nameit);
    loginButton = (TwitterLoginButton) findViewById(R.id.login_button);

    loginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            // Do something with result, which provides a TwitterSession for making API calls
            try {
                TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
                TwitterAuthToken authToken = session.getAuthToken();
                String token = authToken.token;
                String secret = authToken.secret;
                TwitterSession session1 = result.data;
                String name = session1.getUserName();
                nameit.setText("Welcome " + name);
                Log.e("DATTTA", session.getUserId() + "");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void failure(TwitterException exception) {
            // Do something on failure
        }
    });
}

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

    loginButton.onActivityResult(requestCode, resultCode, data);
}

抱歉英语不好,提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    我遇到了同样的问题,我按照以下步骤解决了。

    转到 Twitter 应用程序管理 单击您当前正在使用的“应用程序” 点击“设置”标签

    1) 回调 URL:插入任何有效的 URL,例如 http://www.google.com 当您的设备中未安装 twitter 应用程序时,回调 URL 用于在浏览器上重定向您。

    2) Enable Callback Locking(建议开启回调锁定,确保应用无法覆盖回调URL):验证是否未勾选

    3) 无需在您的应用程序类中初始化您的 twitter sdk,而是将其初始化如下:

        private void init(){
    
        TwitterAuthConfig authConfig = new TwitterAuthConfig(getResources().getString(R.string.consumer_key), getResources().getString(R.string.secrete_key));
        TwitterConfig config = new TwitterConfig.Builder(this)
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(authConfig)
                .debug(true)
                .build();
        Twitter.initialize(config);
    
    }
    

    谢谢..

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,我通过以下方法解决了 那些是

      1) 检查回调 URL 并添加额外的回调 URL,即

      twittersdk://

      添加上面的 url,因为如果我们没有安装 twitter 应用程序,twittersdk 会尝试在 web 视图中打开,所以我们必须添加这个回调 url

      2)在 onCreate 中的 SetContentView 方法之前添加此代码

      //Initialize twitter SDK
      TwitterConfig config = new TwitterConfig.Builder(this)
                      .logger(new DefaultLogger(Log.DEBUG))
                      .twitterAuthConfig(new TwitterAuthConfig(YOUR_CONSUMER_API_KEY, YOUR_CONSUMER_API_SECRET))
                      .debug(true)
                      .build();
      Twitter.initialize(config);
      

      【讨论】:

        猜你喜欢
        • 2017-07-23
        • 2017-06-02
        • 2020-10-03
        • 2013-07-21
        • 2015-06-11
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        相关资源
        最近更新 更多