当前位置: 首页 > news >正文

南海大良网站建设网站没有在工信部备案

南海大良网站建设,网站没有在工信部备案,十大it外包公司,专业的高端企业网站要使用Java实现抖音授权登录,您需要使用抖音开放平台提供的API。以下是一个简单的Java代码示例,演示如何使用OAuth 2.0授权登录流程: 要使用Java实现抖音授权登录,您需要按照以下步骤进行操作: 创建抖音开放平台账号…

要使用Java实现抖音授权登录,您需要使用抖音开放平台提供的API。以下是一个简单的Java代码示例,演示如何使用OAuth 2.0授权登录流程:

要使用Java实现抖音授权登录,您需要按照以下步骤进行操作:

创建抖音开放平台账号
首先,您需要在抖音开放平台上注册并创建一个账号。创建账号后,您需要创建一个应用并获取该应用的客户端ID和回调URL。

导入相关依赖
为了实现抖音授权登录,您需要使用Java OAuth API和Java HttpURLConnection。您可以通过Maven或Gradle等构建工具导入相关依赖。

构造请求参数
在进行授权登录时,您需要构造以下请求参数:

client_id:抖音开放平台分配的客户端ID
redirect_uri:授权成功后的跳转地址
response_type:授权类型,一般为code
scope:授权范围,一般为openid和userinfo
state:用于保持请求和回调的状态,您可以在授权成功后的回调中将其返回给前端
发送授权请求
使用Java HttpURLConnection构造POST请求,将构造好的请求参数发送到抖音开放平台的授权请求URL。请求完成后,您将获得一个包含code的响应。

获取用户信息
使用获取到的code和您的客户端ID,通过Java OAuth API构造访问令牌(Access Token)请求。成功获取Access Token后,您可以请求获取用户信息。您可以通过Java OAuth API构造请求参数,发送请求并解析响应数据。

跳转至抖音客户端
最后,您需要将用户重定向到抖音客户端。在跳转之前,您可以设置一些用户参数,以便在抖音客户端中展示个性化页面。

在实际开发过程中,以上步骤只是整个授权登录流程的一部分。您还需要考虑如何处理授权回调、如何存储和管理用户的访问令牌、如何处理错误等等。因此,建议您仔细阅读抖音开放平台的开发文档,并根据实际情况进行开发。


package com.zbkj.front.service.impl;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zbkj.common.model.user.User;
import com.zbkj.common.response.CommonResult;
import com.zbkj.front.util.DyUtil;
import com.zbkj.front.util.HttpKit;
import com.zbkj.front.util.HttpsUtil;
import com.zbkj.front.vo.DyLoginVo;
import com.zbkj.service.dao.UserDao;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.stream.Collectors;import javax.annotation.Resource;
import java.util.*;/**
* IndexServiceImpl 接口实现*/
@Service
public class TiktokServiceImpl {private static final Logger logger = LoggerFactory.getLogger(TiktokServiceImpl.class);public final static Map<String, String> btyeDanceTypeApi = new HashMap<String, String>();/*** 验证扫码是否成功*/public static final String CHECK_QRCONNECT_URL = "https://e.douyin.com/passport/web/check_qrconnect/?next=https:%2F%2Fe.douyin.com%2Fsite%2F&aid=1575";static {// 抖音授权btyeDanceTypeApi.put("dy", "https://open.douyin.com/");// 头条授权btyeDanceTypeApi.put("tt", "https://open.snssdk.com/");// 西瓜视频btyeDanceTypeApi.put("xg", "https://open-api.ixigua.com/");}// 此处我将需要的参数配置在了配置文件中,大家也可以直接写死@Value("${dibao.tiktok.redirectUri}")private String redirectUri;@Value("${dibao.tiktok.client_key}")private String client_key;@Value("${dibao.tiktok.client_secret}")private String client_secret;@Resourceprivate UserDao userDao;private static final String AUTHORIZE_URL = "https://open.douyin.com/platform/oauth/connect";public String geTiktokLink() {// 构造授权请求参数Map<String, String> params = new HashMap<>();params.put("redirect_uri", redirectUri);params.put("client_key", client_key);params.put("response_type", "code");params.put("scope", "user_info,trial.whitelist");params.put("state", UUID.randomUUID().toString().replace("-", ""));StringBuilder urlBuilder = new StringBuilder(AUTHORIZE_URL);urlBuilder.append("?");for (Map.Entry<String, String> param : params.entrySet()) {urlBuilder.append(param.getKey()).append("=").append(param.getValue()).append("&");}urlBuilder.deleteCharAt(urlBuilder.length() - 1); //return  urlBuilder.toString();}public CommonResult oauthTiktok(String code) {
//        String code = request.getHeaders("code"); // 获取之前存储的 code 参数DyLoginVo dyLoginVo=new DyLoginVo();dyLoginVo.setCode(code);dyLoginVo.setBtyeDanceType("dy");return   loginForDy(dyLoginVo);}/*** 抖音授权登录* @param vo* @return*/public CommonResult loginForDy(DyLoginVo vo) {if (StringUtils.isEmpty(vo.getCode())) {return CommonResult.failed("code 不能为空");}/*** 获取用户基本信息*/Map<String, String> param = new HashMap<>();param.put("client_key", client_key);param.put("client_secret", client_secret);param.put("code", vo.getCode());param.put("grant_type", "authorization_code");String baseDataStr = HttpKit.sendGet(btyeDanceTypeApi.get(vo.getBtyeDanceType()) + "oauth/access_token", param);JSONObject baseDataObject = JSON.parseObject(baseDataStr);if (baseDataObject.get("data") == null) {logger.info("获取字节用户基本信息异常 req => {} , res => {}", JSON.toJSONString(param), baseDataStr);return CommonResult.failed("获取用户信息失败");}JSONObject baseData = baseDataObject.getJSONObject("data");if (baseData.get("open_id") == null) {logger.info("获取字节用户基本信息异常 req => {} , res => {}", JSON.toJSONString(param), baseDataStr);return CommonResult.failed("获取用户信息失败");}String openId = baseData.get("open_id").toString();String accessToken = baseData.get("access_token").toString();//        // 此刻可以判断用户是否存在, 可注册
//        User user = userDao.getUserByOpenId(openId);
//        if (Objects.nonNull(user)) {
            return  check(vo.getCode());
//            // 存在, 组装返回信息
//            return CommonResult.success(accessToken);
//        } else {// 不存在, 获取用户公开信息param.clear();param.put("open_id", openId);param.put("access_token", accessToken);String publicDataStr = HttpKit.sendGet(btyeDanceTypeApi.get(vo.getBtyeDanceType()) + "oauth/userinfo", param);JSONObject publicDataObject = JSON.parseObject(publicDataStr);JSONObject data = publicDataObject.getJSONObject("data");/**data => {"avatar": "https://example.com/x.jpeg","city": "上海","country": "中国","description": "","e_account_role": "<nil>","error_code": "0","gender": "<nil>","nickname": "张伟","open_id": "0da22181-d833-447f-995f-1beefea5bef3","province": "上海","union_id": "1ad4e099-4a0c-47d1-a410-bffb4f2f64a4"}*/
//            User member = new User();
//            member.setCreateTime(new Date());
//            member.setUpdateTime(new Date());
//            member.setSex(Integer.parseInt(data.getString("gender")));
//            member.setNickname(data.getString("nickname"));
//
//            if (!StringUtils.isEmpty(vo.getEncryptedMobile())) {
//                try {
//                    member.setPhone(DyUtil.getMobile(client_secret, vo.getEncryptedMobile()));
//                } catch (Exception e) {
//                    return CommonResult.failed("手机号解密失败!");
//                }
//            }
//            member.setOpenId(openId);
//            // 头像
//            member.setAvatar(data.getString("avatar"));
//            member.setUserType("dy");
//            userDao.insert(member);return CommonResult.success(data);
//        }}public static void main(String[] args) {check("act.3.LXyHk5yavsm-nJgbnxgYwRub3n3KsXBTLwFoqxLcE_2pg469iOOk4JgGiheqbDxGWHzCoss-i2y3JriwlGq3RRvh1cUEXYpA_bxHzRagX-oyonc3bfDm1U9Dvn8nWAeGfjbGNVhm1ac3Lxfe8tfSZr8F3Diw3JXmoTEwO34ZyAXedddaujUjr_O0CoE=");}/*** 扫码是否成功* @param token* @return*/public static CommonResult check(String token){Map<String, String> param = new HashMap<>();JSONObject jsonObject = HttpsUtil.urlGet(CHECK_QRCONNECT_URL + String.format("&token=%s", token), null, null, true);JSONObject data = jsonObject.getJSONObject("data");if (data == null) {return CommonResult.failed("");}//获取headerJSONObject headerJson = jsonObject.getJSONObject("header");//获取Set-CookieList<String> lists = JSONObject.parseArray(headerJson.getJSONArray("Set-Cookie").toJSONString(), String.class);lists = lists.stream().map(v -> v.split(";")[0]).collect(Collectors.toList());String cookie = StringUtils.join(lists, ";");return CommonResult.success(cookie);// TODO: 拿到Cookie处理自己的登录流程...}}
http://www.yayakq.cn/news/708556/

相关文章:

  • 网站建设的扁平化设计深圳集团网站建设
  • 哪里有网站推广公司微官网入口
  • 怎么查网站死链接dw软件手机版
  • 怎么做美食团购网站新品发布会文案
  • 海外模板网站有哪些遵义网站推广
  • 营销网站的优点photoshop软件
  • 做网站有一行一行写代码的吗阳江房产网二手房出售
  • 电子商城网站开发教程网站建设 div怎么用
  • 淄博百度网站建设谷歌搜索引擎为什么打不开
  • 网站域名重定向网站开发设计方案
  • 公司管理系统网站模板下载2017wordpress广告插件
  • 广告公司寮步网站建设wordpress高级自定义字段怎么显示
  • 网站开发公司需要哪些资质哪个网站做任务能赚钱
  • 做网站赚钱吗 怎么赚工厂展厅效果图
  • 网站风格发展趋势信用网站标准化建设
  • 网站关键词提取工具汕头网站建设平台
  • 杭州企业网站建设方案京东网站是刘强冬自己做的吗
  • 做一个手机网站多少钱仙桃哪里做网站
  • 90设计网站手机版网页数据库系统怎么做
  • 怎么接单做网站站群网站程序
  • 做机械设备网站属于教育主管部门建设的专题资源网站是
  • PR做视频需要放网站上网站备案部门
  • 东莞做网站(信科网络)我要建个人网站
  • 装修公司装饰旺道网站优化
  • 上海微网站制作设计制作海宁住房和城乡规划建设局网站
  • 做性的网站有哪些网站开发,自定义首页显示
  • 电商型网站建设怎么才能创个网站
  • 可信网站多少钱网站建设公司新报
  • 手机金融界网站富阳建设局网站
  • 一些做的好的网站建站平台取名字