JOAuth,一个基于Java的OAuth 1(最终版本)和OAuth 2(草案10)库。如何使用?

JOAuth,一个基于Java的OAuth 1(最终版本)和OAuth 2(草案10)库。如何使用?,第1张

JOAuth,一个基于Java的OAuth 1(最终版本)和OAuth 2(草案10)库。如何使用?

看到我已经写了JOAuth,我认为在SO上回答这个问题是适当的。 我没有找到使这个问题成为社区Wiki的选项。:(

请注意, 我不是在这里讨论OAuth授权。有许多专用于此的站点。

JOAuth具有出色的功能。它具有一个控制器

OAuthServlet
,用于管理来自服务提供商的HTTP重定向响应。配置方式
OAuthServlet
到你的web应用程序,只需声明它作为一个
<servlet>
在你
web.xml
像这样:

 <servlet>  <description>An OAuth Servlet Controller</description>  <display-name>OAuthServlet</display-name>  <servlet-name>OAuthServlet</servlet-name>  <servlet-class>com.neurologic.oauth.servlet.OAuthServlet</servlet-class>  <init-param>   <param-name>config</param-name>   <param-value>/WEB-INF/oauth-config.xml</param-value>  </init-param>  <load-on-startup>3</load-on-startup> </servlet>

和您的servlet映射:

 <servlet-mapping>  <servlet-name>OAuthServlet</servlet-name>  <url-pattern>/oauthpublic class FacebookOAuthService extends OAuth2Service { private static final String REDIRECT_URL = "http://localhost:8080/Music4Point0/oauth/oauth_redirect";  @Override protected String processReceivedAuthorization(HttpServletRequest request, String pre, Map<String, String> additionalParameters) throws OAuthException {  // TODO Auto-generated method stub  OAuth2Parameters parameters = new OAuth2Parameters();  parameters.setCode(pre);  parameters.setRedirectUri(REDIRECT_URL);  Map<String, String> responseMap = getConsumer().requestAcessToken(GrantType.AUTHORIZATION_CODE, parameters, null, (String[])null);  if (responseMap == null) {   //This usually should never been thrown, but we just do anyway....   throw new OAuthException("No OAuth response retrieved.");  }  if (responseMap.containsKey("error")) {   throwOAuthErrorException(responseMap);  }  if (responseMap.containsKey(OAuth2Parameters.ACCESS_TOKEN)) {   String accessToken = responseMap.remove(OAuth2Parameters.ACCESS_TOKEN);   request.getSession().setAttribute(Globals.SESSION_OAUTH2_ACCESS_TOKEN, accessToken);   processAdditionalReceivedAccessTokenParameters(request, responseMap);  }  return null; }  @Override protected void processAdditionalReceivedAccessTokenParameters(HttpServletRequest request, Map<String, String> additionalParameters) throws OAuthException {  // TODO Auto-generated method stub }}

由于Facebook仍使用OAuth 2草案0(零),因此其访问令牌不会执行HTTP
302重定向,这就是为什么

processReceivedAuthorization()
它返回null
的原因。该
processReceivedAuthorization()
方法允许客户端处理收到的授权,
pre
期望
授权URL(这就是为什么期望返回类型为
String
)的原因。如果该方法返回a
null
或空字符串,则永远不会发生url重定向。

oauth流完成后,将

<success>
调用元素中的路径(通过
RequestDispatcher
),以表明OAuth已成功完成。

要访问访问令牌(在通过OAuth成功登录后),请执行以下 *** 作:

AccessToken accessToken = (AccessToken)request.getSession().getAttribute(Globals.SESSION_OAUTH1_ACCESS_TOKEN); //For OAuth 1 access tokenString accessToken = (String)request.getSession().getAttribute(Globals.SESSION_OAUTH2_ACCESS_TOKEN); //For OAuth 2 access token.

我希望这个小例子可以帮助那些热衷于使OAuth成为其开发值得经历的人。

抱歉,我找不到该

community wiki
复选框。有空时访问我的博客(几乎没有内容)。

阿迪厄:-)

PS 这是实现

TwitterOAuthService

import javax.servlet.http.HttpServletRequest;import net.oauth.exception.OAuthException;import net.oauth.signature.impl.OAuthHmacSha1Signature;import net.oauth.token.AccessToken;import net.oauth.token.AuthorizedToken;import net.oauth.token.RequestToken;import com.neurologic.oauth.service.impl.OAuth1Service;public class TwitterOAuthService extends OAuth1Service {    public static final String REQUEST_TOKEN_SESSION = "TWITTER_REQUEST_TOKEN_SESSION";        @Override    protected AccessToken processReceivedAuthorizedToken(HttpServletRequest request, AuthorizedToken authorizedToken) throws OAuthException {        // TODO Auto-generated method stub        String requestTokenSecret = null;        RequestToken requestToken = (RequestToken) request.getSession().getAttribute(REQUEST_TOKEN_SESSION);        if (requestToken != null) { requestTokenSecret = requestToken.getTokenSecret();        }        return getConsumer().requestAccessToken(null, authorizedToken, requestTokenSecret, new OAuthHmacSha1Signature());    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5616048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存