java 集成 Facebook 登录

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);
    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响彻天堂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值