2010-07-23 153 views
13

我正在尝试以下示例应用程序的twitter oauth。android twitter retrieveRequestToken 401请求令牌

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);

我提供了正确的“钥匙”和“秘密”不推特给了我错了密钥和密码

+0

plz告诉我要在CALLBACK_URL中放置什么? – Shruti 2012-09-11 09:58:25

+0

你的android活动URL会在twitter返回响应后被调用 – 2012-09-11 18:46:00

+0

你的android活动URL会在twitter返回响应后被调用 – 2012-09-11 18:46:47

回答

1

终于完成了,请查看以下后

android twitter outh tutorial callback problem

+0

好的我问过几次“是否将twitter应用程序配置为Browser ???” – 2010-08-06 00:44:45

+0

已配置为浏览器。 – 2010-08-06 06:34:46

+0

我已经意识到,即使在其他用户的帮助下,您也可以回答自己的问题以获得积分。 – Jorgesys 2013-04-12 16:48:10

8

我刚刚有同样的问题。它只出现在我的开发手机上,但在仿真器和另一部手机上,代码工作正常。在尝试了几个没有运气的相关问题的解决方案之后,最终发现我没有在开发手机上设置时间和日期,该手机没有SIM卡。这导致SSL证书无效,并且OAuth请求失败,以及使用HTTPS的其他任何操作。设定时间后,问题就消失了。

+0

有似乎是同许多其他可能的原因问题也是如此,但这个我以前找不到的建议,可能性因为这不完全是Twitter或OAuth本身的问题。 – DonSteep 2010-07-26 09:44:53

+4

+1,您准备在没有SIM卡的手机中设置日期和时间。 – 2011-08-03 08:38:55

4

** 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

+0

我想在模拟器上面的代码,并在设备上测试以及在两种情况下都不工作。 我将通过设置模拟器的日期和时间再试一次,然后尝试一下。 – 2010-07-27 04:24:59

+0

@Faisal我在我的答案中编辑了你的代码。 – Jorgesys 2010-07-27 15:11:40

+0

我试过这个,但仍然不工作得到相同的错误。 – 2010-07-28 07:22:13

1

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

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

享受..

14

我对这个花了几个小时。似乎您必须在Twitter应用程序开发人员面板的“设置”标签中将任意值设置为回调网址。保持默认的空值将禁用动态回调URL。

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

此外,OAuth检查时钟偏斜。

+2

+1在回调网址(例如https://dev.twitter.com)中设置某些内容适合我。 – 2012-06-24 12:05:55

+0

@gilm:太迟了,但我必须非常感谢你! – 2012-09-03 05:20:31

+0

@吉姆感谢它解决了我的问题。 – Siddhesh 2013-04-09 05:38:37

2

使用https代替提供者中的http

+0

这对我有用。谢谢! – 2014-06-19 18:55:25

相关问题