抖音开放平台调用手册

读取授权用户的昵称和头像

使用 user_info 作用域读取已经同意授权的那个用户,不支持输入任意抖音号查询。

官方资料核对 2026-10-15示例代码,未进行真实接口实测
← 返回平台功能

接入准备

  • 已完成本站抖音授权手册,取得同一应用下该用户的 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 的终端。按调用步骤保存代码文件,再在同一终端执行。

调用步骤

  1. 01

    从上一步安全保存的结果读取 access_token 和 open_id,分别设置 DY_ACCESS_TOKEN、DY_OPEN_ID。不要把其他应用或其他用户的标识混入。

  2. 02

    保存完整 Python 代码为 user.py,运行 python3 user.py;代码按当前参数表要求用 JSON 请求。

  3. 03

    先检查顶层 err_no 和 data.error_code,再使用昵称、头像等资料;仅保存业务必要字段,授权被撤销后停止相关读取。

调用 01

读取已授权用户的公开资料

当前接口为 POST /oauth/userinfo/,user_info 权限。按参数表 application/json 提交;官方页内旧 cURL 的 form 示例与参数表不一致,本站没有实测两种编码的兼容性。

POSThttps://open.douyin.com/oauth/userinfo/

请求头

Content-Type
application/json

参数说明

参数表可左右滑动,查看完整说明。

字段 / 位置类型 / 必填说明
access_token请求体string必填具备 user_info 授权的有效用户凭证,放请求体。
open_id请求体string必填同一应用下该授权用户的唯一标识,不能用公开抖音号替代。

调用代码

替换示例 ID 与请求体内容后运行。

Python 3
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 分别核对。 以下为结构示意,非本站实测结果。

JSON
{
  "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 概述提到的性别、地区等更多字段,本站按此端点实际文档列昵称头像。

注意事项

  • 用户资料是经同意取得的数据,不能当作公开采集数据库供转售或随意转交他人。
  • 若官方调整编码要求,应以当前接口参数及后台调试反馈更新;本页未真实请求该接口。

核验来源

本站按官方资料整理本场景的必要调用步骤与代码,覆盖范围以本页列出的接口为准。官方资料用于追溯规范及查看变更。

  1. 01
    抖音登录和授权核验日期 2026-10-15
  2. 02
  3. 03
    获取用户公开信息核验日期 2026-10-15

抖音开放平台的其他调用手册

← 返回抖音开放平台的全部功能