1 Oauth2.0
步骤:
1 请求授权服务获取授权code。
2 用授权code请求token。
3 用token请求用户信息。
ps:oauth2.0 详情不懂的可以自己百度,也可以去b站学习。
2 Facebook 配置
2.1 进入开发者配置
https://developers.facebook.com/
2.2 创建应用
描述: 创建应用,集成FaceBook 登录
描述: 记录appId、appSecret
描述: 设置获取授权码url
描述: 查看其它
3 java代码
3.1 获取授权码
@RestController
public class FaceBookController {
@GetMapping("/face/book/code")
public String getCode(HttpServletRequest request) {
return request.getParameter("code");
}
}
3.2 拼接uri后点击获取授权码
private static void printCodeUrl() {
String codeUrl = code_url + "?client_id=" + client_id + "&redirect_uri=" + redirect_url + "&state=" + UUID.randomUUID().toString();
System.out.println(codeUrl);
}
3.3 根据授权码获取用户信息
public class JavaTest {
//应用编号
private static String client_id = "#######################";
//应用秘钥
private static String client_secret = "#####################";
//回调地址
private static String redirect_url = "https://localhost:8080/face/book/code";
//获取临时口令
private static String code_url = "https://www.facebook.com/v14.0/dialog/oauth";
//获取访问口令
private static String token_url = "https://graph.facebook.com/v14.0/oauth/access_token";
//获取用户信息
private static String user_info_url = "https://graph.facebook.com/debug_token";
public static void main(String[] args) {
// printCodeUrl();
getUserInfo();
}
private static void getUserInfo() {
String code = "AQAIuvknol9CEc_ylAs3nmXX0oDRsrdzfxbKHvkuY2JJ1Dtu_3LJSkCjjH5_NXE4A_n8Ca7J3YehpKwCpadDjrD4q1LSryd5kapvLQ-sqLKBUFKM8ziscq7HuIAMNA85XsGuPeVjNwLFxh0k_RzhUBslYrymJRZO5QocxxWtNbzH2Xl5LBW7C--wuyp0baapkhepANpS4f74H4GqD4zFdygv-00CY5WRl0mFNWG-1L8d8zzZrev9ywJj8Dr2MYSMxRdDnsvOWkXmGK8A313Ng5vjiDgrYDYojjKot2EKrmK13mjVD2LKSW29iW76AAhi_JuDS0jqTTK3yAH9hEtD0y68cm-gfdhcoudCUmagAVFXHUCYdQ1oNKYx63qRJ9XiTvo";
//获取token
String token = getToken(code);
//根据token 获取用户信息
String userInfoUrl = user_info_url + "?input_token=" + token + "&access_token=" + client_id + "|" + client_secret;
RestTemplate restTemplate = new RestTemplate();
String userInfoResponse = restTemplate.getForObject(userInfoUrl, String.class);
JSONObject jsonObject = JSON.parseObject(userInfoResponse);
System.out.println(jsonObject.toJSONString());
}
private static String getToken(String code) {
String tokenUrl = token_url + "?client_id=" + client_id + "&redirect_uri=" + redirect_url + "&client_secret=" + client_secret + "&code=" + code;
RestTemplate restTemplate = new RestTemplate();
String tokenResponse = restTemplate.getForObject(tokenUrl, String.class);
JSONObject jsonObject = JSON.parseObject(tokenResponse);
return jsonObject.getString("access_token");
}
private static void printCodeUrl() {
String codeUrl = code_url + "?client_id=" + client_id + "&redirect_uri=" + redirect_url + "&state=" + UUID.randomUUID().toString();
System.out.println(codeUrl);
}
}