接口使用场景等说明:由于抖音的授权有效期只有15天,本接口用于提供给维易的“多用户和企业版”会员卡,多用户版会员在管理自己的用户token时,可以定时批量刷新token接口,保持用户的access token有效性。
需要注意的是,抖音授权和抖客授权不一样,两个授权链接和授权有效期、续期管理均不同,不要把两个混同。
抖音每次授权后,得到的 access_token有效期为15天, refresh_token有效期为30天 。
您可以通过刷新refresh_token来延长access_token的有效期,每次刷新都会获得一个新的 refresh_token,但最多只能刷新5次,5次过后,您需要让用户重新手动授权。
刷新返回状态说明:
若 access_token 已过期,调用接口会报错(
error_code=10008
或2190008
),refresh_token 后会获取一个新的 access_token 以及新的超时时间。若 access_token 未过期,refresh_token 不会改变原来的 access_token,但超时时间会更新,相当于续期。
若 refresh_token 过期,获取 access_token 会报错(
error_code=10010
),此时需要重新走用户授权流程。
您的刷新策略:
因此您需要在access_token快要过期时刷新,这样最多可以延期 首次15天+ 15天*5=90天。
不过实际上做不到90天,因为您需要在过期前就要刷新,不会等到15天满了access_token过期后再刷新,因此,通常授权可用时间为14天+14*5=84天。
附:
环境 | http 地址 | https 地址 |
---|---|---|
正式环境 | http://api.veapi.cn/douyin/douyin_refreshtoken | 暂无 |
参数名称 | 参数类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
vekey | String | 是 | V123M56 | 公共参数,接口秘钥,请在会员中心获取 |
refresh_token | String | 是 | rft.520cbb0012ae08ddef050... | 上次用户授权返回的refresh_token值,可以批量提供,用英文逗号相连。每次最多传递50个refresh_token |
GET/POST http://api.veapi.cn/douyin/douyin_refreshtoken?vekey=xxx&refresh_token=rft.510cbb0012ae08ddef0502a927251fbaw9aPmS5nYVEJkr1sp6nkZnKdTbzU
$api="http://api.veapi.cn/douyin/douyin_refreshtoken?vekey=xxx&refresh_token=rft.510cbb0012ae08ddef0502a927251fbaw9aPmS5nYVEJkr1sp6nkZnKdTbzU"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api); //curl_setopt($ch, CURLOPT_POST, true); //POST方式时启用 //curl_setopt($ch, CURLOPT_POSTFIELDS, $postData ); //POST方式时传参 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //如果使用https请启用 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //如果使用https请启用 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true ); //返回数据流,不直接输出 curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); //使用gzip压缩传输让访问更快 curl_setopt($ch, CURLOPT_TIMEOUT, 6); //允许执行的最长秒数。这里设定6S curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo $result; //返回值
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpRequest; public class testGetParam { public static void main(String[] args) { // API网址 String url = "http://api.veapi.cn/douyin/douyin_refreshtoken?vekey=xxx&refresh_token=rft.510cbb0012ae08ddef0502a927251fbaw9aPmS5nYVEJkr1sp6nkZnKdTbzU"; // JDK 8u111版本后,若目标页面为HTTPS协议,请启用proxy用户密码鉴权 //System.setProperty("jdk.http.auth.tunneling.disabledSchemes", ""); // 发送请求 String result = HttpRequest.get(url) .timeout(10000)//设置超时,毫秒 .execute().body(); System.out.println(result); } }
import requests # 要访问的API网页 target_url = "http://api.veapi.cn/douyin/douyin_refreshtoken?vekey=xxx&refresh_token=rft.510cbb0012ae08ddef0502a927251fbaw9aPmS5nYVEJkr1sp6nkZnKdTbzU" # 发送请求 response = requests.get(target_url) # 获取页面内容 if response.status_code == 200: print response.text
参数名称 | 参数类型 | 示例值 | 描述 |
---|---|---|---|
success_num | Int64 | 2 | 本次批量刷新的成功个数 |
fail_num | Int64 | 1 | 本次批量刷新的失败个数 |
old_refresh_token | String | rft.520cbb0012ae0 | 参数中传入的refresh_token,当批量查询时,可用该字段判断每组返回值对应归属于参数中的refresh_token处理结果值。 |
refresh_token | String | rft.540160fd98a1a62cd | 刷新后新的refresh_token,注意每次授权后只能用refresh_token刷新5次,5次后需要手动重新授权。 |
expires_in | Int64 | 2592000 | 生成新的refresh_token的有效时间30天。 |
error_msg | String | refresh_token过期 | 当返回该字段时表示刷新出错了,通常是“refresh_token过期”表示该授权已经刷新5次了,不能再用刷新来续期了。请手动授权。 |
sub_code | Int64 | 10010 | 当返回该字段时表示刷新出错了,它和error_msg一起出来。当该值为10010时表示refresh_token过期。 |
{ "error": "0", "msg": "refresh_token 批量刷新完毕!", "success_num": 1, "fail_num": 0, "data": [ { "old_refresh_token": "rft.520cbb0012ae08ddef0502a927251fbaw9zPmS5nYVEJkr2sp6nkZnKdTbzU", "captcha": "", "desc_url": "", "expires_in": 2592000, "log_id": "20230426164714C0FBE24FF25F86028D84", "refresh_token": "rft.540160fd98a1a62cd602d8c514c490fcnYo5N83SwOHP9tHR70bMNZhvUWOV" } ], "request_id": "p9iqQnX" }