OAuth java 实现,缺少 oauth_callback
我的问题是我在尝试从雅虎获取请求令牌时遇到错误。该错误表明我缺少 oauth_callback 参数,是的,我错过了它,因为我不需要它。我读过,如果我不想使用它(桌面应用程序),我需要将其设置为“oob”值。我也这样做了,但没有效果。如果我将其设置为 null,也会发生同样的情况。我使用 OAuth for java: http://oauth.googlecode.com/svn/code /java/核心/
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());
My problem is I get error while trying to get request token from Yahoo. The error says Im missing oauth_callback parameter and yes I miss it because I dont need it. Ive read I need to set it to "oob" value if I dont want to use it(desktop app). And I did that but to no avail. If I set it to null the same happens. Im using 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());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您是否尝试过使用 Scribe?
我也遇到了 OAuth java 库的问题,所以我开发了这个库。它几乎是跨提供商的,并且比您正在使用的有更好的文档。
如果它不适用于雅虎,您可以轻松扩展它,创建您自己的 Provider
希望有帮助!
Have you tried using Scribe?
I also had problems with OAuth java libs so I developed that one. It's pretty much cross provider and better documented than the one you're using.
If it does not work with Yahoo you can easily extend it creating your own Provider
Hope that helps!
java OAuthMassage 类中存在问题,我通过添加到 addRequiredParameters 方法这一行来解决它
if (pMap.get(OAuth.OAUTH_CALLBACK) == null) {
addParameter(OAuth.OAUTH_CALLBACK,consumer.callbackURL);
}
如果您仍然遇到此问题,我可以帮助您:[电子邮件受保护]
there is a problem in the java OAuthMassage class, I resolved it by adding to addRequiredParameters method thie line
if (pMap.get(OAuth.OAUTH_CALLBACK) == null) {
addParameter(OAuth.OAUTH_CALLBACK, consumer.callbackURL);
}
if you still have this problem I can help you: [email protected]
我没有使用过该库,但看起来它没有正确处理回调 URL。自 OAuth 1.0a (http://oauth.net/advisories/2009-1/和 http://oauth.net/core/1.0a/),回调 URL 需要要在第一次调用中发送以获取请求令牌(而不是在客户端调用中进行授权),并且该库似乎尚未更新以执行此操作(至少从查看代码来看)。我假设雅虎需要该参数。
I haven't used that library, but it looks like it isn't properly handling the callback URL. Since OAuth 1.0a (http://oauth.net/advisories/2009-1/ and http://oauth.net/core/1.0a/), the callback URL needs to be sent in the first call to get the request token (not in the client-side call to authorise it), and it seems that this library hasn't been updated to do this (at least from looking at the code). I assume that Yahoo requires the parameter to be there.
不确定最初的问题是否已解决,但想指出雅虎上周发布的新 Java OAuth SDK:
http://developer.yahoo.net/blog/archives/2010/ 07/yos_sdk_for_java.html
尝试使用 Java 通过 OAuth 访问雅虎服务的开发人员可能会发现此 SDK 的部分内容很有帮助。
Not sure if the original problem was ever solved, but wanted to point to a new Java OAuth SDK that Yahoo released last week:
http://developer.yahoo.net/blog/archives/2010/07/yos_sdk_for_java.html
Developers trying to access Yahoo's services via OAuth with Java may find parts of this SDK helpful.