3

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

以上所有工作都很好,除了雅虎,它在尝试检索请求令牌时给我一个 401 错误。我尝试将我的回调 url 修改为 http ,甚至尝试了带外身份验证。

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

我使用 Signpost 库请求 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); 

字符串 authURL = yahooProvider.retrieveRequestToken(yahooConsumer,YAHOO_REDIRECT_URL); startWebView(authURL);

编辑:

这是捕获的 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): 在 oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239) 08-21 00:18:10.945: WARN/System.err(3752) : 在 oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189) 08-21 00:18:10.955: WARN/System.err(3752): 在 oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)

谢谢,

阿比纳夫

4

2 回答 2

4

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

这一切都是有道理的,因为雅虎将权限范围包装到了消费者密钥中。阅读此说明以获取更多详细信息:Yahoo OAuth Scope

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

让我知道这是否适合您。

于 2011-08-20T22:52:33.273 回答
0

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

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

于 2011-08-20T19:15:25.643 回答