Android上的Yahoo OAuth - 401错误

时间:2011-08-20 19:00:57

标签: android oauth yahoo signpost

我正在尝试使用路标库在Android上为Google,Twitter,Yahoo等实施OAuth。

以上所有工作都很好,除了雅虎,它在尝试检索请求令牌时给出了401错误。我已经尝试将我的回调网址修改为http,甚至尝试了带外认证。

有没有人知道我可能做错了什么?

下面粘贴了使用路标库请求OAuth请求令牌的代码。

private static CommonsHttpOAuthConsumer yahooConsumer = new CommonsHttpOAuthConsumer(
        YAHOO_CONSUMER_KEY, YAHOO_CONSUMER_SECRET);
private static CommonsHttpOAuthProvider yahooProvider = new CommonsHttpOAuthProvider(
        YAHOO_REQUEST_URL, YAHOO_ACCESS_TOKEN_URL, YAHOO_AUTH_URL); 

  

String authURL = yahooProvider.retrieveRequestToken(                                       yahooConsumer,YAHOO_REDIRECT_URL);                   startWebView(authURL);

修改

这是catched Exception的输出:

  

08-21 00:18:10.935:WARN / System.err(3752):oauth.signpost.exception.OAuthNotAuthorizedException:授权失败(服务器回复401)。如果使用者密钥不正确或签名不匹配,则会发生这种情况。   08-21 00:18:10.945:WARN / System.err(3752):at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239)   08-21 00:18:10.945:WARN / System.err(3752):at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)   08-21 00:18:10.955:WARN / System.err(3752):at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)

谢谢,

阿比纳夫

2 个答案:

答案 0 :(得分:4)

consumer_key_rejected表示您未向Yahoo提供有效的consumer_key。如果您确实向雅虎提供了正确的consumer_key,那么您可以检查您在雅虎的应用注册。您可能需要至少检查一下雅虎提供的一项或多项服务。不要忘记选择应用程序的类型,无论是基于Web还是基于客户端。

这一切都有意义,因为雅虎将权限范围包含在消费者密钥中。请阅读此说明以获取更多详细信息:Yahoo OAuth Scope

这是解决问题可能有用的解决方法示例和提示:Yahoo OAuth Problem - Consumer Key Rejected

请告诉我这是否适合您。

答案 1 :(得分:0)

尝试使用Provider.setOAuth10a(true)强制进行1.0a身份验证。

还值得检查客户端上的日期,时间和时区是否正确,否则签名验证将失败。