OAuth java实现,oauth_callback缺失

时间:2010-03-28 22:26:15

标签: java yahoo-oauth

我的问题是我在尝试从Yahoo获取请求令牌时遇到错误。错误说我缺少oauth_callback参数,是的,我想念它,因为我不需要它。我读过如果我不想使用它(桌面应用程序),我需要将其设置为“oob”值。我这样做但无济于事。如果我将其设置为null,则会发生相同的情况。我正在使用OAuth for java:http://oauth.googlecode.com/svn/code/java/core/

OAuthServiceProvider serviceProvider = new OAuthServiceProvider("https://api.login.yahoo.com/oauth/v2/get_request_token",
                                                                        "https://api.login.yahoo.com/oauth/v2/request_auth",
                                                                        "https://api.login.yahoo.com/oauth/v2/get_token");
OAuthConsumer consumer = new OAuthConsumer("oob", consumerKey, consumerSecret, serviceProvider);
OAuthAccessor accessor = new OAuthAccessor(consumer);
OAuthClient client = new OAuthClient(new HttpClient4());
OAuthMessage response = client.getRequestTokenResponse(accessor, OAuthMessage.POST, null);
System.out.println(response.getBodyAsStream());

4 个答案:

答案 0 :(得分:1)

您是否尝试过使用Scribe

我也遇到过OAuth java库的问题,所以我开发了那个。它几乎是交叉提供者,并且比您正在使用的文档更好地记录。

如果它不适用于Yahoo,您可以轻松扩展它,创建自己的Provider

希望有所帮助!

答案 1 :(得分:1)

java OAuthMassage类中存在问题,我通过添加addRequiredParameters方法解决了这个问题 if(pMap.get(OAuth.OAUTH_CALLBACK)== null){             addParameter(OAuth.OAUTH_CALLBACK,consumer.callbackURL);         } 如果你还有这个问题我可以帮你:rbouadjenek@gmail.com

答案 2 :(得分:0)

我没有使用过该库,但看起来它没有正确处理回调URL。由于OAuth 1.0a(http://oauth.net/advisories/2009-1/http://oauth.net/core/1.0a/),需要在第一次调用中发送回调URL以获取请求令牌(而不是在客户端调用中授权它),似乎该库尚未更新以执行此操作(至少从查看代码)。我假设雅虎要求参数存在。

答案 3 :(得分:0)

不确定原始问题是否得到解决,但是想指出雅虎上周发布的新Java OAuth SDK:
http://developer.yahoo.net/blog/archives/2010/07/yos_sdk_for_java.html

尝试通过OAuth使用Java访问Yahoo服务的开发人员可能会发现此SDK的某些部分很有帮助。