我正在尝试使用路标库在Android上实现Google,Twitter,Yahoo等的OAuth.
除Yahoo以外,以上所有方法均能正常工作,雅虎在尝试检索请求令牌时给我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);
和
String authURL = yahooProvider.retrieveRequestToken(
yahooConsumer,YAHOO_REDIRECT_URL);
startWebView(authURL);
编辑:
这是捕获到的Exception的输出:
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)
谢谢,
阿比纳夫
解决方法:
Consumer_key_rejected表示您未向Yahoo提供有效的Consumer_key.如果您确实为Yahoo提供了正确的consumer_key,则可以在Yahoo中检查您的应用注册.可能您需要至少检查Yahoo提供的一项或多项服务.不要忘记选择应用程序的类型,无论是基于Web的还是基于客户端的.
由于Yahoo将权限范围包装到了Consumer Key中,所以这一切都是有道理的.请阅读以下说明以获取更多详细信息:Yahoo OAuth Scope.
这是变通办法示例,提示可能对解决您的问题有用:Yahoo OAuth Problem – Consumer Key Rejected
让我知道这是否适合您.