位置: IT常识 - 正文

抖音小程序实践三:接口开发指南(抖音小程序任务哪里接)

编辑:rootadmin
抖音小程序实践三:接口开发指南

推荐整理分享抖音小程序实践三:接口开发指南(抖音小程序任务哪里接),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:抖音小程序设计规范,小程序实践报告,微信小程序实践总结,抖音小程序项目怎么样,抖音小程序运营方案,抖音小程序运营方案,小程序实践报告,小程序实践报告,内容如对您有帮助,希望把文章链接给更多的朋友!

通过官方文档可以更系统的学习到所有的接口,我这边罗列一下我自己用到测试过的接口供大家参考。

前端-小程序对接官方文档:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/user-information/tt-get-user-info服务端-小程序官方文档:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/server-api-introduction

1.前端-获取用户信息授权

API文档:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/user-information/tt-get-user-info

// tt.getUserProfile(); 获取用户的基本信息,只可在 tap和支付 事件回调中调用,每次调用都会弹出授权提示窗,若用户同意,则会返回用户的真实数据。 //获取已登录用户的基本信息或特殊信息,首次使用的用户会弹出授权提示窗,若用户同意,则会返回用户的真实数据。 tt.getUserInfo({ success(res) { console.log("getUserInfo 调用成功", JSON.stringify(res)); }, fail(res) { console.log("getUserInfo 调用失败", JSON.stringify(res)); }, })

响应:

{ "userInfo": { "nickName": "claxxxxxhen", "avatarUrl": "https://p9-passport.byteacctimg.com/img/mosaic-legacy/3796/2975xxx00.image", "gender": 0, "city": "", "province": "", "country": "", "language": "", "userId": "37431xxxxx1486", "sessionId": "3b652xxxxxxc3b490351ef1311" }, "rawData": "{\"nickName\":\"claixxxxn\",\"avatarUrl\":\"https://p9-passport.byteacctimg.com/img/mosaic-legacy/3796/297xxxx.image\",\"gender\":0,\"city\":\"\",\"province\":\"\",\"country\":\"\",\"language\":\"\"}", "signature": "5fed6c636f3cdxxxxx3d2e97e0869d0", "encryptedData": "G+kEtB+JE2S3/r8V0Ftxxxx/CxxxxxxxxxxxxxFKKLp6LNpm3QtoHlj2BZREiN8zSE8z7gK51ECsKFDyPn4mtuthY90zj+Zwx0EPyC+DwP1ZJ4ahVawzVkMdnBMhnT48+7CZvOAWa/LyY93MmSsDNLDR0BBTpBnYbnqSW3tGNvTcllNuX2F1Laso2RtsFQlQPoVvoBysfIxliFDvL2+Rw/ZEIc2i7uXnbDeTzPuiiC8km7a/ImZSEZiTdsGNDKEnepmYStswydENgG51NiPRwj15JyOAeALb34xhgYFFZGZFw703XGUbXIn8s8tbqJ+u72cjbqxTp/D7qBL2cHA3uJC6rhrM/VgH7hiDMlwApdRQuFcNQSItQ41RhcD14R7iFoQObc4/IPT0BmvG+WuKMV+PuEp8vaA==", "iv": "ar8P0OkTQxxxxqHrW9w==", "errMsg": "getUserProfile:ok"}其中encryptedData是需要的用户openId等数据iv是用于解密的,需要留存

Q:此外,什么是用户的openId?什么是用户的unionId? A:开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性。也就是说,小程序内openId是唯一的,全平台unionId是唯一的。

2.前端-用户登录

API文档:https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/open-interface/log-in/tt-login

tt.login({ force: true, success(res) { console.log(`login 调用成功${res.code}${res.anonymousCode}`); }, fail(res) { console.log(`login 调用失败`); },});

响应:

{ "anonymousCode": "UAx9YfgVDsxxxxxxxxxxiZCXh7OaAfiW8ei…6mhQP1ETXRfFRKxidnPqMxZtxgXv7yrbWjkBwVePN6FIJq-1Q", "code": "1ujmWYVW0mlU4xzzzzzzxxxxxxxxMUkdf9Vp1…g9z0Gy8LFbNekfVjY-Ng6V4_Bc6HxAPQ-SQvrPS8Gf-1ZFvaE", "isLogin": true, "errMsg": "login:ok"}

tt.login调用douyin接口登录,获取code/anonymous_code,这两个字段是后续个人加密信息解密的重要字段

3.服务端-jscode2session换取sessionKey

API文档:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/log-in/code-2-session/

Map<String, String> dataMap = new HashMap<>(); dataMap.put("appid", "tt60d416xxxxc8801"); dataMap.put("secret", "582830exxxxc99e14c0999a"); dataMap.put("code", "3muFdjQoIFZw0WcBLhltspBxxxxxNfT6mkCQO4RbKicdR0j7a12-PRO6yRCHn90HYDg8DerKt_lxoVr1Donbw"); dataMap.put("anonymous_code", "i8MsKM6tGuKzjxMH3vJF3R4NxAN6xxxxxxxx38wsHAcfmY4dXwaWInvy6isFJ5X8ejQzKcYJVgiPCPkBkMwkw4MrRjFY_iVDOcTOY74"); HttpResult httpResult = HttpClientUtils.doPostJson("https://developer.toutiao.com/api/apps/v2/jscode2session", JSON.toJSONString(dataMap));//注意这是生产的地址 String res = httpResult.getBody(); System.out.println(res);

响应:

{ "err_no": 0, "err_tips": "success", "data": { "session_key": "hZy6t19VPjFqm********", "openid": "V3WvSshYq9******", "anonymous_openid": "", "unionid": "f7510d9ab***********" }}这个时候能够获取session_key(解密用户信息的重点字段),此外还有重要的用户openid和unionid4.服务端-敏感信息解密

API文档:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/user-information/sensitive-data-process/ 这边测试解密用户信息,此外手机号等encryptData的数据,都可以拿这套流程来解密。 我这边主要写了java后端解密的方法,对于js也可以解密,官方文档有比较多的方法展示。

Base64.Decoder decoder = Base64.getDecoder(); byte[] sessionKeyBytes = decoder.decode("Ps2xsxxxxxxxJkA=="); byte[] ivBytes = decoder.decode("ar8P0OxxxxxxqHrW9w=="); byte[] encryptedBytes = decoder.decode("cfOy32OwcBaZv7xxxxxxxxxxxvZQHOjzDABhBOWInm0PNGwzXIBkUIZmto2pjC8VDmZS3v3N27OCb2c5E7DblfSVbcjXHuZN7OPB+zOxDADD7Q=="); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES"); IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec); byte[] ret = cipher.doFinal(encryptedBytes); String res = new String(ret); System.out.println(res);注意:Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); // JDK does not support PKCS7Padding, use PKCS5Padding instead以上会有一个坑,对于JDK版本的不同,对解密的key的长度会有限制。比如Illegal key size or default parameters这种错误。因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在一些问题:●密钥长度上不能满足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters),然后网上说要通过替换JDK/jre/lib/security的local_policy.jar我们正好遇到了服务器上的JDK版本较老,本地的JDK比较新,而上线报错这样的问题,下面的方法亲测解决异常关于JDK如何启用无限强度加密:针对Java 8u151之前版本,内含有限强度策略文件,我们下载 oracle上的无限制版本替换local_policy.jar、US_export_policy.jar针对Java 8u151之后版本,默认采用无限强度策略文件,如果我们想定义要使用的版本,有一个安全属性crypto.policy。Security.setProperty(“crypto.policy”,“unlimited”).在JCE框架初始化之前设置该属性。5.再看看敏感数据解密流程tt.login调用douyin接口登录,获取code/anonymous_codegetUserProfile,获取iv、encryptedDatajscode2session 获取session_key (前后端获取均可)解密用户信息 (前后端解密均可),注意保存用户信息

这样就能够获取openid\unionid\用户明文信息了

6.前端-获取用户设备信息tt.getSystemInfo({ success(res) { console.log("getSystemInfo 调用成功", JSON.stringify(res)); }, fail(res) { console.log("getSystemInfo 调用失败", JSON.stringify(res)); }, });抖音小程序实践三:接口开发指南(抖音小程序任务哪里接)

响应:

"language": "zh_CN", "version": "6.6.3", "brand": "devtools", "fontSizeSetting": 16, "platform": "devtools", "battery": 100, "wifiSignal": 4, "appName": "devtools", "statusBarHeight": 47, "nativeSDKVersion": "10.3.0", "model": "iPhone 12", "system": "iOS 14", "deviceScore": { "cpu": 7.905, "gpu": 9.0622, "memory": 7.0344, "overall": 7.9524 }, "SDKVersion": "2.68.0", "pixelRatio": 3, "screenWidth": 390, "screenHeight": 844, "windowWidth": 390, "windowHeight": 844, "safeArea": { "left": 0, "right": 390, "top": 47, "bottom": 810, "width": 390, "height": 763 }, "SDKUpdateVersion": "2.68.0.3", "devicePixelRatio": 3, "errMsg": "getSystemInfo:ok"}7.前端-获取用户手机号

获取抖音API当前登录状态的手机号,获取前需用户授权,否则无法获取。注意:该能力无法直接使用,需申请白名单

小程序获取手机号授权能力仅适用于以下场景:网络购物、帐号下信息内容同步、票务预订、业务办理、信息查询(如:社保、公积金)、预约等,其他不符合使用规范的申请不予开通,申请可参考: 获取用户手机号开通指南

评级达 B 级,且信用分达到 90 分的企业主体小程序,可以申请获取用户手机号能力

tt.getPhoneNumber({ success(res) { console.log("getPhoneNumber 调用成功", JSON.stringify(res)); }, fail(res) { console.log("getPhoneNumber 调用失败", JSON.stringify(res)); }, })

响应:

{ "detail": { "cloudId": "", "encryptedData": "0tJ8EV5kwMq8xxxxxxQmf1KG2yKVJX3pYMgWbnY4SJ0MmWMFHJx1ySIaWIgt09sMCL0vAPmgMQ8Hv6d9NgRksOYDTdO1JEmJMy4VGJpBUKL3qqcOvBIc6ToN3RyUTad6Q==", "iv": "ZtZtYvS7gNbGMpyYg500rA==", "errMsg": "getPhoneNumber:ok" }, "errMsg": "getPhoneNumber:ok"}

这个数据就一样解密即可

8.前端-获取用户精准位置信息

用于频繁请求地理位置,实时获取精确位置信息。一般适用于打车、外卖等需要频繁请求获取地理位置的行业。需要申请后可查看。

tt.chooseAddress({ success(res) { console.log("chooseAddress 调用成功", JSON.stringify(res)); }, fail(res) { console.log("chooseAddress 调用失败", JSON.stringify(res)); }, })

只要有接口权限,并且是用户登录授权状态,即可获取 响应:

{ "longitude": 116.3974, "latitude": 39.9092, "city": "北京市", "speed": 0, "accuracy": 65, "altitude": 0, "verticalAccuracy": 65, "horizontalAccuracy": 65, "errMsg": "getLocation:ok"}9.前端-消息订阅

前端发起用户订阅订单消息通知,用户同意后,即可通过接口发送实时订单消息给用户,提升用户体验

小程序消息订阅能力说明

注意:沙盒内测试仅支持安卓,如绑定的设备是IOS的测试会报错 — {"errMsg":"requestSubscribeMessage:fail not supported by current application","errNo":21502}

tt.requestSubscribeMessage({ tmplIds: [], // 需要填入开放平台申请的模版id,支持最多3个同类型模版 success(res) { //订阅成功 console.log("订阅成功", res); }, fail(error) { //订阅失败 console.log("订阅失败, 错误详情: ", error); tt.showToast({ title: "订阅失败", icon: "fail", }); }, complete(res) { //订阅完成 console.log("tt.requestSubscribeMessage API调用完成: ", res); }, });

如果是安卓设备,请求结果如下:

{ "MSG137673105551c58exxxxx15858": "accept", "itemSettings": { "MSG137673105551cxxxxxbf15858": "accept" }, "errMsg": "requestSubscribeMessage:ok"}10.服务端-获取AccessToken

AccessToken是接口鉴权凭证 access_token 是小程序的全局唯一调用凭据,开发者调用小程序支付时需要使用 access_token。access_token 的有效期为 2 个小时,需要定时刷新 access_token,重复获取会导致之前一次获取的 access_token 的有效期缩短为 5 分钟。

接口:POST https://developer.toutiao.com/api/apps/v2/token 请求示例:

curl --location --request POST 'https://developer.toutiao.com/api/apps/v2/token' \--header 'Content-Type: application/json' \--data-raw '{ "appid": "ttabc*****", "secret": "d428***********", "grant_type": "client_credential"}'

响应:

{ "err_no": 0, "err_tips": "success", "data": { "access_token": "0801121***********", "expires_in": 7200 }}11.服务端-发送订阅消息

请求地址: POST https://developer.toutiao.com/api/apps/subscribe_notification/developer/v1/notify POSTMAN中的请求示例

curl --location --request POST 'https://developer.toutiao.com/api/apps/subscribe_notification/developer/v1/notify' \--header 'Content-Type: application/json' \--data-raw '{ "access_token": "080112184679zzzz7556f426d33673d3d", "app_id": "tt60d4166zzzzzzz8801", "tpl_id": "MSG137673105zzzzzz7c84bf15858", "open_id": "_000S3uzzzzzzzzAzN_zZb", "data": { "快递派送": "SF1111111111" }}'

响应:

{ "err_no": 0, "err_tips": ""}
本文链接地址:https://www.jiuchutong.com/zhishi/287141.html 转载请保留说明!

上一篇:vue中,右键菜单组件v-contextmenu的使用(vue 右键菜单)

下一篇:阿尔塞多火山上的象龟,加拉帕戈斯群岛 (© Tui De Roy/Minden Pictures)(阿尔山火山)

  • 鸿蒙桌面相册名字怎么去掉(鸿蒙桌面相册名称怎么改)

    鸿蒙桌面相册名字怎么去掉(鸿蒙桌面相册名称怎么改)

  • 抖音私信怎么打开(抖音私信怎么打开权限设置)

    抖音私信怎么打开(抖音私信怎么打开权限设置)

  • 苹果闹铃只振动不响铃怎么办(苹果闹铃振动怎么设置强度)

    苹果闹铃只振动不响铃怎么办(苹果闹铃振动怎么设置强度)

  • vivox9运行内存怎么清(vivo x9运行内存)

    vivox9运行内存怎么清(vivo x9运行内存)

  • 腾讯会议一页能显示几个人(腾讯会议一页能显示个数可以改吗)

    腾讯会议一页能显示几个人(腾讯会议一页能显示个数可以改吗)

  • 美团怎么回复顾客评论(美团怎么回复顾客)

    美团怎么回复顾客评论(美团怎么回复顾客)

  • 苹果8p屏幕失灵怎么处理(苹果8p屏幕失灵刷机可以解决吗)

    苹果8p屏幕失灵怎么处理(苹果8p屏幕失灵刷机可以解决吗)

  • 苹果数据线必须原装吗(苹果数据线必须用苹果的头吗)

    苹果数据线必须原装吗(苹果数据线必须用苹果的头吗)

  • 相机运行异常怎么修复(相机功能异常)

    相机运行异常怎么修复(相机功能异常)

  • vivo发现高危病毒系统禁止安装怎么办(vivox9发现高危病毒无法安装)

    vivo发现高危病毒系统禁止安装怎么办(vivox9发现高危病毒无法安装)

  • 在wps中画横线如何水平(在wps中画横线如何加粗)

    在wps中画横线如何水平(在wps中画横线如何加粗)

  • 腾讯视频切换不了账号(腾讯视频切换不了账号怎么办)

    腾讯视频切换不了账号(腾讯视频切换不了账号怎么办)

  • 闲鱼不申诉会怎样(闲鱼15天不申诉会自动取消)

    闲鱼不申诉会怎样(闲鱼15天不申诉会自动取消)

  • 自己的微信聊天记录别人能看到吗(自己的微信聊天记录怎么恢复)

    自己的微信聊天记录别人能看到吗(自己的微信聊天记录怎么恢复)

  • iphonexs支持wifi6吗(iphonexs支持30w快充吗)

    iphonexs支持wifi6吗(iphonexs支持30w快充吗)

  • 华为p30自带贴膜有两层吗(华为p30新机自带膜)

    华为p30自带贴膜有两层吗(华为p30新机自带膜)

  • 手机如何设置密码锁屏(手机如何设置密码)

    手机如何设置密码锁屏(手机如何设置密码)

  • mate30pro音量键怎么调(mate30pro音量键怎么打开)

    mate30pro音量键怎么调(mate30pro音量键怎么打开)

  • laas是怎样一种平台(laaspaassaas)

    laas是怎样一种平台(laaspaassaas)

  • vivo手机怎么隐藏应用(vivo手机怎么隐藏图标)

    vivo手机怎么隐藏应用(vivo手机怎么隐藏图标)

  • 华为手表健康三环分别什么意思(华为手表健康三环表盘含义)

    华为手表健康三环分别什么意思(华为手表健康三环表盘含义)

  • 火山上我的订单在哪找(火山怎么查看我的订单)

    火山上我的订单在哪找(火山怎么查看我的订单)

  • 微信地区怎么隐藏(微信地区怎么隐藏别人看不到)

    微信地区怎么隐藏(微信地区怎么隐藏别人看不到)

  • 苹果x电池健康怎么恢复(苹果x电池健康100但耗电快)

    苹果x电池健康怎么恢复(苹果x电池健康100但耗电快)

  • 苹果耳机需要煲机吗(苹果耳机煲机)

    苹果耳机需要煲机吗(苹果耳机煲机)

  • 手机安全模式在哪打开(oppo手机怎样取消安全模式)

    手机安全模式在哪打开(oppo手机怎样取消安全模式)

  • jushed32.exe是什么进程  jushed32进程查询(jusched.exe)

    jushed32.exe是什么进程 jushed32进程查询(jusched.exe)

  • 【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)(论文阅读网站排行榜)

    【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)(论文阅读网站排行榜)

  • 采购合同缴纳印花税依据
  • 机动车统一发票税率多少
  • 物流公司车子
  • 应付销货方代垫运费计入什么科目
  • 科技型中小企业申请流程
  • 勘探费收费标准
  • 进料加工委托 加工费发票怎么开
  • 已纳消费税税款允许扣除的是
  • 补提固定资产折旧账务处理
  • 影响所得税金额的因素有哪些
  • 代扣代缴的增值税
  • 怎么作废未使用的发票
  • 工程开票是否需要资质?
  • 税务局查账征收转为核定征收之程序
  • 跨月冲红的发票怎么做账
  • 一般纳税人注销公司流程2023
  • 增值税更正申报表需要逐月更正吗
  • 1697509419
  • 退休人员再就业受伤算工伤吗
  • 城建税上月少计提本月怎么做账
  • 为离职员工代缴社保 如何规避法律责任
  • win10无法上网,显示灰色的飞行模式
  • 小规模企业没有成本票怎么办
  • php执行linux脚本
  • vue3+ts+vite
  • el-input_inner
  • 处置子公司的方式
  • 应纳税所得额的意思
  • 电子发票和纸质发票的法律效力
  • 网络分割算法
  • css常见的选择器有哪几种
  • audit install success
  • 进项税发票可以跨年认证吗
  • 收到保险公司的车赔款会计分录怎么写
  • 招待费住宿费专票
  • 公司分红给个人
  • 本年累计金额怎么得到
  • 线程池中的一个线程执行完一个任务后
  • 织梦cms官网
  • python 读取图片
  • 2022年最新装修风格
  • 材料短缺计入成本吗
  • 成本会计制造费用核算的内容
  • 废品材料回收的会计分录
  • 模板的固定
  • 应付股利是否影响未分配利润
  • 职业年金是什么意思?退休后怎么算职业年金?
  • 收到所得税退税现金流量选哪个
  • 对公允价值套期的认识
  • 如何办理出口收款凭证
  • 房东减免部分房租
  • 暂估成本发票最晚什么时候补齐
  • 营业外支出核算的内容
  • 预收账款和预付账款都属于负债类科目
  • 税务局退回来的附加税金怎么做账
  • 房地产老项目简易计税开专票
  • 物业所在地是指物业住所地吗
  • 固定资产折旧方法不考虑净残值
  • 营业利润包括资本化支出吗
  • 资产负债表资产按照什么顺序
  • 计提折旧对公司有什么好处
  • win10 系统内存
  • window怎么样
  • winxp出现应用程序错误
  • rancheros github
  • windows安装服务器
  • 电脑防火墙在哪里设置
  • linux wc-l
  • cocos2dx小游戏
  • perl linux命令
  • Bullet(Cocos2dx)之创建地形
  • python 入门
  • python爬虫怎么做
  • ssh远程执行命令返回结果存成本地变量
  • js实现新浪博客推送
  • javascript中变量的命名规则有哪些?
  • jquery 异步提交表单
  • jQuery插件封装时如要实现链式编程,需要
  • 酒类包装物押金的消费税处理规定
  • 一个人可以申请
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设