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

一、向抖音开放平台管理中心去创建应用
在这里插入图片描述
二、创建应用过后,抖音官方会进行审核,审核比较慢,一般需要3-7个工作日。
三、审核通过之后会给你一个相对于的Client Key,和一个Client Secret,相当于k和v。
四、拿到这些就可以进行实际代码开发
具体代码实现结合官方文档进行开发
1.第一步获取授权码code,按照官方的要求填相应的数据去请求这个地址https://open.douyin.com;所有api都是以这个为开头
在这里插入图片描述
具体代码实现:
Service

@Overridepublic 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

  @Overridepublic 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-164184186935String 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("抖音扫码登录异常...");}}

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部