【问题标题】:android twitter retrieveRequestToken 401 on request tokenandroid twitter retrieveRequestToken 401 请求令牌
【发布时间】:2014-07-09 19:57:43
【问题描述】:

我正在为 twitter oauth 尝试以下示例应用程序。

http://www.androidsdkforum.com/android-sdk-development/3-oauth-twitter.html

private void askOAuth() {
        try {
            consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
            provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token",
                                                "http://twitter.com/oauth/access_token",
                                                "http://twitter.com/oauth/authorize");
            String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
            Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show();
            this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
        } catch (Exception e) {
            Log.e(APP, e.getMessage());
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

当我运行以下代码时,它会给出如下异常

“oauth.signpost.exception.OAuthNotAuthorizedException:授权失败(服务器回复 401)。如果消费者密钥不正确或签名不匹配,则可能发生这种情况。”

在这条线上String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);

我提供了正确的“密钥”和“秘密”,Twitter 是否给了我错误的密钥和秘密?

【问题讨论】:

  • 请告诉我在 CALLBACK_URL 中放什么???
  • 你的 android 活动 URL 将在 twitter 返回响应后被调用
  • 你的 android 活动 URL,一旦 twitter 返回响应就会被调用
  • 所以如果我必须加载一个活动..我在回调 url 中放了什么 ..目前我在回调 url 中添加了 someting.com ..这样网页就被加载了..请指导我..

标签: android twitter4j


【解决方案1】:

我为此花了几个小时。似乎您必须在 Twitter 应用程序开发人员面板的“设置”选项卡中为回调 url 设置 ANY 值。保留默认的空值会禁用动态回调 url。

我在网上找到的所有教程和所有信息都是无效的。 Twitter 早就删除了“客户/网站”单选按钮。

此外,OAuth 还会检查时钟偏差。

【讨论】:

  • +1 在回调 url 中设置一些东西(例如dev.twitter.com)对我有用。
【解决方案2】:

我也遇到了同样的问题。它只出现在我的开发手机上,但在模拟器和另一部手机上,代码运行良好。在尝试了几个解决相关问题的方法后,最终发现我没有在开发手机上设置时间和日期,其中没有 SIM 卡。这导致 SSL 证书无效和 OAuth 请求失败,以及使用 HTTPS 的任何其他内容。设置时间后问题就消失了。

【讨论】:

  • 似乎还有许多其他可能导致同一问题的原因,但是我之前找不到建议的原因,可能是因为它不完全是 Twitter 或 OAuth 本身的问题。
  • +1, 你在没有sim卡的手机上设置日期和时间是对的。
【解决方案3】:

**1) **将日期和时间设置为正确的值, 这将有助于解决这个问题。****

2)

private OAuthConsumer consumer;
private OAuthProvider provider;
...
...
...
provider = new CommonsHttpOAuthProvider (
                TWITTER_REQUEST_TOKEN_URL, 
                TWITTER_ACCESS_TOKEN_URL,
                TWITTER_AUTHORIZE_URL);

private void askOAuth() {
        try {
            consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
            provider = new CommonsHttpOAuthProvider("http://twitter.com/oauth/request_token",
                                                "http://twitter.com/oauth/access_token",
                                                "http://twitter.com/oauth/authorize");

            provider.setOAuth10a(true);

            String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
            Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show();
            this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
        } catch (Exception e) {
            Log.e(APP, e.getMessage());
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

3) 您的 twitter 应用程序是否配置为浏览器? 试试这个键:

消费键

sdOjEI2cOxzTLHMCCMmuQ

消费者秘密

biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc

【讨论】:

  • 我正在模拟器中尝试上面的代码并在设备上进行了测试,但在这两种情况下都无法正常工作。我会通过设置模拟器日期和时间再试一次,然后再试。
  • 我已经测试了示例 code.google.com/p/agirardello 并且我没有问题,您确定您的 Twitter 应用程序配置为浏览器应用程序吗???尝试使用这些密钥 消费者密钥:sdOjEI2cOxzTLHMCCMmuQ 消费者密钥:biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc
  • 你好。我在 Titanium 中编写了一个代码,当我使用上面提到的消费者密钥和消费者密钥时,它工作得很好。但是当我在 Twitter 上创建自己的应用程序时,它不起作用。你能告诉我你在 twitter 应用程序中做了什么特别的改变吗?
  • 是的,设置正确的日期/时间解决了我的问题,但为什么会这样?为什么 twitter api 现在需要正确的日期/时间?
  • 设置日期时间后,应用程序将在设备中正常工作
【解决方案4】:

在提供程序中使用 https 代替 http

【讨论】:

    【解决方案5】:

    终于搞定了,看看下面的帖子

    android twitter outh tutorial callback problem

    【讨论】:

    • 我发现即使在其他用户的帮助下,您也可以回答自己的问题来获得积分。
    【解决方案6】:

    是的,totramon 是对的...如果您只在身份验证问题时遇到问题,您可能需要设置设备时间。我遇到了同样的问题,只用这个解决方案解决了。此外,如果您使用的是旧的 twitter api,则需要将其更改为稳定版 api(2.1.4)。您可以从以下链接找到:

    http://twitter4j.org/en/index.html

    享受..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2012-06-22
      相关资源
      最近更新 更多