OAuth提供程序库(Java)

Pab*_*dez 55 java oauth consumer scribe

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

你知道是否有什么能让这项工作更容易吗?

Hen*_*wan 31

Scribe是一个用于Java的OAuth库,由提问者自己编写.;-)

注意:我在此发布此答案,以便其他googlers可以选择其他选择.对于另一个基于库的替代方案,请参阅我的其他答案"Jersey OAuth签名库".

一些代码用于说明用法:

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);
Run Code Online (Sandbox Code Playgroud)

创建请求:

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


Pas*_*ent 12

http://oauth.net/code上提到的一个图书馆看起来很有趣(我不包括那些不是你想要的Spring SecurityOAuth Signpost的OAuth):

一个Java库示例是由约翰·克里斯蒂安,普利文Alavilli和德克Balfanz贡献.

Ryan Heaton也提供了针对Spring Security的OAuth.此项目未托管在OAuth存储库中.

OAuth Signpost为Java和Apache HttpComponents提供简单的OAuth消息签名(Google Android ready!).供稿人: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"); %> 
Run Code Online (Sandbox Code Playgroud)

这看起来很接近你想要的.

  • 只是为了澄清:Pascal将这些库划掉了,因为它们仅用于客户端OAuth.但是,作者正在寻找的是服务器端OAuth库. (4认同)
  • 您对2013年答案的任何更新?!:) (2认同)

Kev*_*vin 1

Spring Security有一个OAuth 插件