整合oauth访问facebook的java开发

本文详细介绍了OAUTH认证流程及其实现方式,包括获取未授权的RequestToken、用户授权、换取AccessToken等步骤,并提供了Facebook平台上的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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获取你想要的东西了,包括发微博,修改个人信息等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值