2011-08-20 118 views
3

我试图在Android上使用路标库实现Google,Twitter,Yahoo等OAuth。Android上的雅虎OAuth - 401错误

以上所有的工作都很好,除了雅虎,当试图检索请求令牌时给我一个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);

编辑:

下面是来自逮住异常输出:

08-21 00:18:10.935: WARN/System.err(3752): oauth.signpost.exception.OAuthNotAuthorizedException: Authorization failed (server replied with a 401). This can happen if the consumer key was not correct or the signatures did not match. 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)

感谢,

Abhinav

+0

您能否提供来自雅虎401的错误细节? –

+0

@Kristiono - 我编辑了我的问题,添加了logcat输出和异常。谢谢 –

+0

感谢您抛出的异常。我想你也应该看到雅虎给出的401身体响应。雅虎应该给你一个关于错误的描述性回应。 –

回答

4

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

这一切都很有意义,因为雅虎将权限范围包含在使用者密钥中。请阅读此说明以了解更多详情:Yahoo OAuth Scope

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

让我知道这对你的作品。

+0

感谢Kristiono的解释。我很确定我的客户密钥是好的,并且已经尝试了基于Web和基于客户端的各种组合,包括OOB。你给出的第二个链接非常有趣 - 让我试试他说的话,看看它是否有效! –

+0

谢谢Kristiono,我现在正在获取请求令牌。这真的帮了我很大的忙 - 我正在考虑为雅虎编写自己的OAuth客户端。 –

+0

很高兴听到! :) –

0

尝试用Provider.setOAuth10a(true)强制进行1.0a认证。

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

+0

谢谢。让我试试这个并回到你身边。 –

+0

这不起作用。我不禁感到,我错过了一些基本的东西。我的应用程序已注册为基于Web的应用程序,拥有自己的域名作为应用程序网址,我也将其作为重定向网址,尽管我也尝试将其注册为桌面应用程序并尝试OOB。 –