我的问题是我在尝试从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());
答案 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的某些部分很有帮助。