我正在尝试使用路标库在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)
谢谢,
阿比纳夫
答案 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身份验证。
还值得检查客户端上的日期,时间和时区是否正确,否则签名验证将失败。