OAuth提供程序库(Java)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我正在寻找一个Java库来帮助我构建一个OAuth提供者。我必须能够接收到OAuth签名的请求,并确定它们是否有效(检查签名、时间戳和当前值)。

你知道外面有没有什么东西能让这个任务更简单吗?

提问于
用户回答回答于

http://oauth.net/code上提到的一个库看起来很有趣(我将Spring安全OAuth路标OAuth排除在外):

一个Java库示例是由约翰·克里斯蒂安,普利文Alavilli和德克Balfanz贡献。 Spring Security的OAuth也由Ryan Heaton提供。此项目不在OAuth存储库中。 OAuth Signpost为Java和Apache HttpComponents提供了简单的OAuth消息签名(Google Android已准备就绪!)。由Matthias Kaeppler提供。

我已经进一步检查了Java库,我认为它提供了客户端和服务器端代码所需的一切。下面的博客文章实际上是一个完整的例子,我正在粘贴下面的服务器代码(一个JSP):

<%@ page import="net.oauth.server.*"%>
<%@ page import="net.oauth.*"%>

<%
//Presumably this should actually be looked up for a given key.
String consumerSecret="uynAeXiWTisflWX99KU1D2q5";

//Presumably the key is sent by the client. This is part of the URL, after all.
String consumerKey="orkut.com:623061448914";

//Construct the message object. Use null for the URL and let the code construct it.
OAuthMessage message=OAuthServlet.getMessage(request,null);

//Construct an accessor and a consumer
OAuthConsumer consumer=new OAuthConsumer(null, consumerKey, consumerSecret, null);
OAuthAccessor accessor=new OAuthAccessor(consumer);

//Now validate. Weirdly, validator has a void return type. It throws exceptions
//if there are problems.
SimpleOAuthValidator validator=new SimpleOAuthValidator();
validator.validateMessage(message,accessor);

//Now what? Generate some JSON here for example.
System.out.println("It must have worked"); %> 

这看起来接近你想要的。

用户回答回答于

一些代码来说明用法:

OAuthService service = new ServiceBuilder()
                                  .provider(TwitterApi.class)
                                  .apiKey("your_api_key")
                                  .apiSecret("your_api_secret")
                                  .build();
...
Token requestToken = service.getRequestToken();
String your_token = requestToken.getToken();
...
Verifier verifier = new Verifier("your_previously_retrieved_verifier");
 Token accessToken = service.getAccessToken(requestToken, verifier);

创建请求:

OAuthRequest request = OAuthRequest(Verb.GET, "http://api.twitter.com/1/direct_messages.json");
service.signRequest(accessToken, request);
Response response = request.send();

扫码关注云+社区