调整oauth访问facebook的java开发
整合oauth访问facebook的java开发
OAUTH相关的三个URL:
Request Token URL: 获取未授权的Request Token服务地址;
User Authorization URL: 获取用户授权的Request Token服务地址;
Access Token URL: 用授权的Request Token换取Access Token的服务地址;
OAUTH请求流程:
A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求。
B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。
C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。
E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。这个比第一步A多了一个参数就是Request Token。
F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。
code:
1、获取request_token
2、获取accessToken
从result的结果中可以解析出你所需要的accessToken,这样就可以根据accessToken获取你想要的东西了,包括发微博,修改个人信息等操作。
OAUTH相关的三个URL:
Request Token URL: 获取未授权的Request Token服务地址;
User Authorization URL: 获取用户授权的Request Token服务地址;
Access Token URL: 用授权的Request Token换取Access Token的服务地址;
OAUTH请求流程:
A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求。
B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。
C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。
E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。这个比第一步A多了一个参数就是Request Token。
F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。
code:
1、获取request_token
代码1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String loginRedirectURL = FacebookOAuthUtil.getLoginRedirectURL(); response.sendRedirect(loginRedirectURL); }
代码2. public static String getLoginRedirectURL() { return "https://graph.facebook.com/oauth/authorize?client_id=" + client_id + "&display=page&redirect_uri=" + redirect_uri + "&scope=" + StringUtil.delimitObjectsToString(",", perms); }
2、获取accessToken
代码3. String code = request.getParameter("code"); Proxy proxy = null; String authURL = FacebookOAuthUtil.getAuthURL(code); URL url = new URL(authURL); // then parsing the response to get accesstoken info String result = readURL(url, proxy);
代码4 public static String getAuthURL(String authCode) { return "https://graph.facebook.com/oauth/access_token?client_id=" + client_id + "&redirect_uri=" + redirect_uri + "&client_secret=" + secret + "&code=" + authCode; }
代码5. private String readURL(URL url, Proxy proxy) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream is = null; if (null == proxy) { is = url.openConnection().getInputStream(); } else { is = url.openConnection(proxy).getInputStream(); } int r; while ((r = is.read()) != -1) { baos.write(r); } return new String(baos.toByteArray()); } }
从result的结果中可以解析出你所需要的accessToken,这样就可以根据accessToken获取你想要的东西了,包括发微博,修改个人信息等操作。
1 楼
marsface
2012-05-31
请问有完整的验证例子么?还望赐教:likeyouzou@163.com,谢谢
2 楼
javaloverZY
2012-07-06
您好,你还有完整的例子么??287834625@qq.com
3 楼
black0419
2012-08-16
我也求一个完整的例子,尤其是现在在做这个东西,要求是能做到全程不接触用户信息,用户信息和oauth要完全分开。如果能提点两句就再感谢不过了。jiangguang0419@gmail.com,感谢大神。