首页 > 上网技巧 > java抖音开发授权登录获取用户信息详细步骤

java抖音开发授权登录获取用户信息详细步骤

时间:2021-02-20 03:58 作者:QQ地带 我要评论

 一、向抖音开放平台管理中心去创建应用

 
二、创建应用过后,抖音官方会进行审核,审核比较慢,一般需要3-7个工作日。
三、审核通过之后会给你一个相对于的Client Key,和一个Client Secret,相当于k和v。
四、拿到这些就可以进行实际代码开发
具体代码实现结合官方文档进行开发
1.第一步获取授权码code,按照官方的要求填相应的数据去请求这个地址https://open.douyin.com;所有api都是以这个为开头
 
具体代码实现:
Service
 
@Override
    public String qrcodeAuth(DouYinCode codes) {
        String code = "https://open.douyin.com/platform/oauth/connect/?client_key=" + codes.getClientKey()
                + "&response_type="+codes.getResponseType()+"&scope="+codes.getScope()+"&redirect_uri="+codes.getRedirectUri()+"&state="+codes.getState();
        logger.info("qrConnect requestUrl=" + code);
        return code;
    }
 
Controller
 
@GetMapping(value = "code")
    public void Code(HttpServletRequest request, HttpServletResponse response, DouYinCode codes) throws IOException {
        String requestUrl = douYinService.qrcodeAuth(codes);
        response.sendRedirect(requestUrl);
    }
 
2.根据code换取对应的token,根据token获取用户信息,获取到用户信息保存到数据库
Service
 
  @Override
    public OutputObject insertUser(User user) {
        try {
            int i = loginMapper.insert(user);
            if (i > 0){
                return new OutputObject(ReturnCode.SUCCESS, "成功", "添加成功");
            }else {
                return new OutputObject(ReturnCode.FAIL, "失败", user);
            }
 
        }catch (Exception e){
            // 事务回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return new OutputObject(ReturnCode.FAIL, "失败", e.getMessage());
        }
 
    }
 
Controller
 
 /**
     * 根据code换取token,根据token获取用户信息
     * 保存用户信息到数据库
     */
    @GetMapping(value = "user")
    public OutputObject doGit(HttpServletRequest request, HttpServletResponse response, DouYinCode codes) throws ServletException, IOException {
        String code = request.getParameter("code");
        // 判断
        if(code == null){
            throw new RuntimeException("用户禁止授权...");
        }
        try {
            // 获取到了code值,回调没有问题
            // 定义地址
 
            String token_url = "https://open.douyin.com/oauth/access_token/?client_key=" + clientKey
                    + "&client_secret="+clientSecret+"&code="+code+"&grant_type=authorization_code";
            // 发送请求
            HttpClient client = new HttpClient(token_url);
            // 发送get请求
            client.get();
            // 获取到请求的结果  json格式的字符串,把json格式的字符串转换成Map集合
            String token_content = client.getContent();
            ObjectMapper om = new ObjectMapper();
            Map map = new HashMap();
            map = om.readValue(token_content, Map.class);
            Map<String, Object> object = (Map<String, Object>) map.get("data");
            Object access_token = object.get("access_token");
            redis.set("access_token",access_token);
            Object open_id = object.get("open_id");
            // 获取到接口调用凭证
            // 获取个人的信息
            // 传入两个参数,access_token openid
            // https://open.douyin.com/oauth/userinfo/?access_token=act.0b28cadff39c17f87f3dcd42e6ea77bbDswNzmJgdfR4n534HQZJye86KNHF&open_id=49a60c64-b855-4bee-8379-164184186935
            String user_url = "https://open.douyin.com/oauth/userinfo/?access_token="+access_token+"&open_id="+open_id;
            // 发送请求
            HttpClient client1 = new HttpClient(user_url);
            client1.get();
            String user_content = client1.getContent();
            ObjectMapper user = new ObjectMapper();
            Map usermap = new HashMap();
            map = user.readValue(user_content, Map.class);
            // 解析获取到的对象
            Map<String, Object> userObject = (Map<String, Object>) map.get("data");
            DouYinUser user1 = new DouYinUser();
            Object a = userObject.get("nickname");
            user1.setNickname((String) a);
            Object b = userObject.get("open_id");
            user1.setOpenId((String) b);
            Object avatar = userObject.get("avatar");
            user1.setAvatar((String) avatar);
            Object gender = userObject.get("gender");
            user1.setGender((gender.toString()));
            Object province = userObject.get("province");
            user1.setProvince((String) province);
            Object city = userObject.get("city");
            user1.setCity((String) city);
            Object country = userObject.get("country");
            user1.setCountry((String) country);
            // 存储数据库
            return douYinService.insertUsers(user1);
        } catch (ParseException e) {
            e.printStackTrace();
            throw new RuntimeException("抖音扫码登录异常...");
        }
    }
 

标签: 抖音
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告