快速业务通道

基于OAuth安全协议的Java应用编程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
t;);

指定 Customer Key,Customer Secret 以及 OAuthServiceProvider,构造 OAuthConsumer 对象:

OAuthConsumer oauthConsumer = new OAuthConsumer(null    , "www.example.com"    , "hIsGkM+T4+90fKNesTtJq8Gs"    , serviceProvider);

基于OAuth安全协议的Java应用编程(6)

时间:2011-07-03 IBM 李三红

为 OAuthConsumer 指定签名方法,以及提供您自签名 X509 数字证书的 private key。

oauthConsumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.RSA_SHA1); oauthConsumer.setProperty(RSA_SHA1.PRIVATE_KEY, privateKey);

由 OAuthConsumer 对象生成相应的 OAuthAccessor 对象:

 accessor = new OAuthAccessor(consumer);

指定您想要访问的 Google 服务,在这里我们使用的是 Calendar 服务:

 Collection<? extends Map.Entry> parameters     = OAuth.newList("scope","http://www.google.com/calendar/feeds/");

通过 OAuthClient 获得 Request Token:

OAuthMessage response = getOAuthClient().getRequestTokenResponse(    accessor, null, parameters);

使用 Request Token, 将用户重定向到授权页面,如图 7 所示:

图 7. OAuth User Authorization

基于OAuth安全协议的Java应用编程(7)

时间:2011-07-03 IBM 李三红

当用户点击“Grant access”按钮,完成授权后,再次通过 OAuthClient 获得 Access Token:

oauthClient.getAccessToken(accessor, null, null);

在上述步骤成功完成后,Access Token 将保存在 accessor 对象的 accessToken 成员变量里。查看您的 Google Account 安全管理页面,可以看到您授权的所有消费方,如图 8 所示。

图 8. Authorized OAuth Access to your Google Account

使用 OAuth Access Token 访问 Google 服务

接下来,我们使用上一节获得的 Access Token 设置 Google Service 的 OAuth 认证参数,然后从 Google Service 获取该用户的 Calendar 信息:

OAuthParameters para = new OAuthParameters(); para.setOAuthConsumerKey("www.example.com"); para.setOAuthToken(accessToken); googleService.setOAuthCredentials(para, signer);

清单 1 是完整的示例代码,供读者参考。

清单 1. 基于 OAuth 认证的 Google Service 消费方实现

import java.util.Collection; import java.util.Map; import net.oauth.OAuth; import net.oauth.OAuthAccessor; import net.oauth.OAuthConsumer; import net.oauth.client.OAuthClient;   public class DesktopClient {    private final OAuthAccessor accessor;    private OAuthClient oauthClient = null;    public DesktopClient(OAuthConsumer consumer) {      accessor = new OAuthAccessor(consumer);    }    public OAuthClient getOAuthClient() {      return oauthClient;    }    public void setOAuthClient(OAuthClient client) {      this.oauthClient = client;    }    //get the OAuth access token.    public String getAccessToken(String httpMethod,     Collection<? extends Map.Entry> parameters) throws Exception {      getOAuthClient().getRequestTokenResponse(accessor, null,parameters);      String authorizationURL = OAuth.addParameters(     accessor.consumer.serviceProvider.userAuthorizationURL,    OAuth.OAUTH_TOKEN,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号