抖音开放平台调用手册
读取授权用户的昵称和头像
使用 user_info 作用域读取已经同意授权的那个用户,不支持输入任意抖音号查询。
← 返回平台功能接入准备
- 已完成本站抖音授权手册,取得同一应用下该用户的 access_token 与 open_id,实际返回 scope 包含 user_info。
- 应用能力已获批准,授权尚未撤销;安装 Python 3,把敏感字段从服务端私有存储注入环境变量。
准备环境变量
示例值需要替换为自己的凭证或资源 ID。代码在本机或服务端运行;密钥不应放进公开网页。
DY_ACCESS_TOKEN- 该用户授权所得有效 access_token。
DY_OPEN_ID- 与此 token 同一应用、同一用户的 open_id。
export DY_ACCESS_TOKEN='ACT_EXAMPLE_NOT_A_REAL_TOKEN'
export DY_OPEN_ID='OPEN_ID_EXAMPLE'以上 export 适用于 macOS / Linux 的终端。按调用步骤保存代码文件,再在同一终端执行。
调用步骤
- 01
从上一步安全保存的结果读取 access_token 和 open_id,分别设置 DY_ACCESS_TOKEN、DY_OPEN_ID。不要把其他应用或其他用户的标识混入。
- 02
保存完整 Python 代码为 user.py,运行 python3 user.py;代码按当前参数表要求用 JSON 请求。
- 03
先检查顶层 err_no 和 data.error_code,再使用昵称、头像等资料;仅保存业务必要字段,授权被撤销后停止相关读取。
调用 01
读取已授权用户的公开资料
当前接口为 POST /oauth/userinfo/,user_info 权限。按参数表 application/json 提交;官方页内旧 cURL 的 form 示例与参数表不一致,本站没有实测两种编码的兼容性。
POST
https://open.douyin.com/oauth/userinfo/请求头
Content-Typeapplication/json
参数说明
参数表可左右滑动,查看完整说明。
| 字段 / 位置 | 类型 / 必填 | 说明 |
|---|---|---|
access_token请求体 | string必填 | 具备 user_info 授权的有效用户凭证,放请求体。 |
open_id请求体 | string必填 | 同一应用下该授权用户的唯一标识,不能用公开抖音号替代。 |
调用代码
替换示例 ID 与请求体内容后运行。
import json
import os
import urllib.error
import urllib.request
def env(name):
value = os.environ.get(name)
if not value:
raise SystemExit("缺少环境变量: " + name)
return value
def post(url, payload, content_type):
request = urllib.request.Request(url, data=payload,
headers={"Content-Type": content_type}, method="POST")
try:
with urllib.request.urlopen(request, timeout=30) as response:
return json.load(response)
except urllib.error.HTTPError as error:
raise SystemExit("HTTP " + str(error.code) + ",请按响应状态检查;不输出可能含凭证的原文")
except (urllib.error.URLError, TimeoutError):
raise SystemExit("网络或超时错误;不要盲目重复消费一次性授权码")
body = json.dumps({"access_token": env("DY_ACCESS_TOKEN"),
"open_id": env("DY_OPEN_ID")}).encode("utf-8")
result = post("https://open.douyin.com/oauth/userinfo/", body,
"application/json")
data = result.get("data", {})
if str(result.get("err_no")) != "0" or str(data.get("error_code")) != "0":
raise SystemExit("资料读取失败,err_no=" + str(result.get("err_no")) +
",data.error_code=" + str(data.get("error_code")))
print(json.dumps({key: data.get(key) for key in
("open_id", "nickname", "avatar", "union_id")},
ensure_ascii=False, indent=2))
返回示例
仅展示与登录资料有关的字段,空值和额外字段按真实响应处理;顶层 err_no 和内层 error_code 分别核对。 以下为结构示意,非本站实测结果。
{
"err_no": 0,
"err_msg": "",
"log_id": "LOG_ID_EXAMPLE",
"data": {
"error_code": "0",
"open_id": "OPEN_ID_EXAMPLE",
"nickname": "示意用户",
"avatar": "https://example.com/avatar.jpg",
"union_id": "UNION_ID_EXAMPLE"
}
}常见错误与排查
28001003 / 28001008用户 token 无效或过期- 按同一应用刷新凭证,用户已撤销时重新取得同意。
28001014 / 28001018应用未获对应能力- 在应用后台核对 user_info 申请结果及用户实际授权,不能只改 scope 字符串。
28003017可用 quota 已耗尽- 停止无意义重试,核对后台额度并联系官方处理。
28001007请求参数不合法- 核对 JSON 编码、字段及 token/open_id 配对;文档编码冲突仍存在时附 log_id 向官方反馈。
调用注意
- 不根据昵称或头像推断实名、手机号、账号归属证明或支付身份。
- 当前公开资料接口不保证返回旧 SDK 概述提到的性别、地区等更多字段,本站按此端点实际文档列昵称头像。
注意事项
- 用户资料是经同意取得的数据,不能当作公开采集数据库供转售或随意转交他人。
- 若官方调整编码要求,应以当前接口参数及后台调试反馈更新;本页未真实请求该接口。
核验来源
本站按官方资料整理本场景的必要调用步骤与代码,覆盖范围以本页列出的接口为准。官方资料用于追溯规范及查看变更。
- 01抖音登录和授权核验日期 2026-10-15
- 02移动/网站应用能力申请及使用规范核验日期 2026-10-15
- 03获取用户公开信息核验日期 2026-10-15
