抖音 Access Token

约 815 字大约 3 分钟

抖音 Access Token

一. Token 使用

access_token 是抖音小游戏的全局唯一接口调用凭据,小游戏调用各接口时都需使用,引力引擎主要在拉取抖音小游戏广告变现相关数据时使用。

注意

如您的游戏是 iap 类型,不需要做广告变现收入的统计,则您不需要接入!

二. 问题与解决方案

由于抖音的限制,如果有多方业务同时调用抖音接口open in new window刷新 access_token ,则会导致 Token 冲突进而影响整体业务,可能产生数据异常,造成无可挽回的损失!

针对此种情况,引力引擎提供了两种方案解决,请您根据具体业务情况来选择任意一种方案:

1. 引力全自动刷新

引力后台-设置-应用管理-配置-抖音开发者页面,开启 自动刷新 Token 功能,刷新模式选择:引力全自动刷新,此时需要您填写小游戏AppSecret,引力引擎服务器会自动定时刷新以获取最新的 token。

警告

此种方式需广告主保证:当前“开发者 ID”、“开发者密码”下,只有引力引擎可直接向抖小平台请求获取 access_token若多方服务器同时请求获取,则会导致 access_token 冲突与失效,进而可能产生数据异常,造成无可挽回的损失!

2. 引力调用客户接口刷新

引力后台-设置-应用管理-配置-抖音开发者页面,开启 自动刷新 Token 功能,刷新模式选择:引力调用客户接口刷新,此时需要您填写由您的后端团队提供的 客户刷新接口地址 ,引力引擎后续会定时发起Get请求此接口以获取最新的 token。

引力会在您提供的 URL 后面自动拼接两个参数:

  • gravity_timestamp:为秒级时间戳
  • gravity_sign:为签名(您可以考虑校验该值来避免接口被滥用)
计算gravity_sign签名步骤
  1. 将引力 App 的 access_token(该参数在 应用管理open in new window 界面可以获取),gravity_timestamp 和小游戏 appid 三个 string 进行拼接

  2. 对拼接成的 string 进行 md5 哈希加密,转成 string

Java 代码示例

String str = GRAVITY_APP_ACCESS_TOKEN + GRAVITY_TIMESTAMP + MINI_GAME_APP_ID;
String sign = DigestUtils.md5DigestAsHex((str).getBytes()).toLowerCase();

​ 例如

GRAVITY_APP_ACCESS_TOKEN:b69faba2154c79d6c1cmfa879d6c1ca8
GRAVITY_TIMESTAMP:1688627637
MINI_GAME_APP_ID:wxia29f6ajdn987fj4

拼接后
b69faba2154c79d6c1cmfa879d6c1ca81688627637wxia29f6ajdn987fj4

签名生成
3b58c3a9002108ed28a9ce2a06666b0d

最终如果您提供的 URL 另有参数会通过&gravity_timestamp=1688627637&gravity_sign=3b58c3a9002108ed28a9ce2a06666b0d拼在后面,如没有参数则会将?gravity_timestamp=1688627637&gravity_sign=3b58c3a9002108ed28a9ce2a06666b0d拼接在后面。

提示

您提供的后端接口需要遵循以下返回格式:{"access_token": "********", "expires_in": 7200}

  • access_token 获取到的凭证
  • expires_in 凭证有效时间,单位:秒

3. 客户透传参数到引力

客户自行接入刷新微信/抖音 Access Token 接口,在 Token 变更时,通过接口调用透传access_token给引力引擎。

提示

此种方式,适合多方平台都需要使用 access_token 的情况,引力引擎后台将不再主动刷新,而是由您主动调用引力的接口,透传 access_token 到引力引擎。