0
点赞
收藏
分享

微信扫一扫

单点登陆社交登陆

单点登陆社交登陆 OAuth2.0

OAuth2.0 image.png

  • 使用微博社交登陆 https://open.weibo.com/connect image.png
  • 开发手册 https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E image.png
更换 YOUR_CLIENT_ID App Key:1514335119
更换 YOUR_REGISTERED_REDIRECT_URI OAuth2.0 授权设置 授权回调页 成功的
https://api.weibo.com/oauth2/authorize?client_id=1514335119&response_type=code&redirect_uri=http://gulimall.com/success
第二  
如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
eg http://guliimall.com/success?code=507925fe1eacf95eb09b875fe1cfcf83
第三  
换取Access Token 访问令牌
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
使用Code换取Access Token,Code只能用一次
同—个用户的accessToken—段时间是不会变化的

image.png

image.png

image.png

image.png

社交登陆

授权登陆后 会有一个回调地址  并携带code 利用code 换取令牌 接下来操作
@GetMapping("/oauth2.0/weibo/success")
public String weibo(@RequestParam("code") String code) throws Exception {
    //1.code 换取accessToken
    //2.登陆成功调回首页
    Map<String, String> map = new HashMap<>();
    map.put("client_id", "1514335119");//应用id
    map.put("client_secret", "d3b69f4674eef8cf01602c4346660556");
    map.put("grant_type", "authorization_code");
    map.put("redirect_uri", "http://auth.gulimall.com/oauth2.0/weibo/success");//回调地址
    map.put("code", code);//code
    //String host, String path, String method, Map<String, String> headers,querys,bodys
    HttpResponse response = HttpUtils.doPost("https://api.weibo.com", "/oauth2/access_token", "post",
            new HashMap<>(), map, new HashMap<>());
    //如果获取相应码 是200 成功
    if (response.getStatusLine().getStatusCode() == 200) {
        //获取响应实体类 EntityUtils转换
        String json = EntityUtils.toString(response.getEntity());
        //转换SocialUser.class 对象
        SocialUser socialUser = JSON.parseObject(json, SocialUser.class);
        //1.当用户第一次进网站 会自动注册 或者有了 就登陆
    } else {
        return "redirect:http://auth.gulimall.com/login.html";
    }
    return "redirect:http://gulimall.com";
}
  • org.apache.http.util下的一个工具类
String json = EntityUtils.toString(response.getEntity());
//json 转换json object
JSONObject jsonObject = JSON.parseObject(json);
//直接获取属性
String name = jsonObject.getString("name");//直接获取名称
举报

相关推荐

0 条评论