
本文针对 TikTok Business API 使用 OAuth2 授权码流程中遇到的授权码立即过期的问题,提供了详细的解决方案。通过修改 API 端点和请求参数,并调整 Content-Type,可以有效解决 "Authorization code is expired" 错误,成功获取 access token。
在使用 TikTok Business API 进行开发时,开发者可能会遇到 OAuth2 授权码迅速过期的问题,即使按照官方文档流程操作,仍然无法成功获取 access token。 本文将提供一个经过验证的解决方案,帮助开发者克服这一障碍。
问题分析
从问题描述来看,授权码在生成后立即失效,这通常不是授权码本身的问题,而是请求 access token 时使用的 API 端点或请求参数不正确导致的。TikTok 的 API 文档可能不够清晰,导致开发者容易混淆不同的 API 端点和参数。
解决方案
以下步骤展示了如何正确请求 access token,避免授权码过期错误:
-
修改 API 端点
原代码中使用的是 https://open.tiktokapis.com/v2/oauth/token/,这可能是错误的端点。尝试使用以下端点:
token_url = "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/"
这个端点专门用于获取 access token,在某些情况下,它是解决问题的关键。
-
修改请求参数
在请求 access token 时,请求参数需要进行调整。client_key 和 client_secret 应该替换为 app_id 和 secret。此外,可以尝试移除 grant_type 和 redirect_uri 参数。
data = { 'app_id': app_id, 'secret': secret_key, 'auth_code': authorization_code, }精简的参数列表可以避免一些潜在的参数冲突问题。
-
修改 Content-Type
将 Content-Type 从 application/x-www-form-urlencoded 修改为 application/json。 同时,需要使用 json.dumps() 来序列化数据。
import json headers = { 'Content-Type': 'application/json' } response = requests.post(token_url, headers=headers, data=json.dumps(data))显式地设置 Content-Type 为 application/json 并使用 json.dumps() 可以确保请求体以正确的格式发送。
完整代码示例
以下是修改后的 get_access_token 函数的完整代码示例:
import requests
import json
import urllib.parse
def get_access_token(authorization_code, app_id, secret_key, redirect_uri):
token_url = "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/"
data = {
'app_id': app_id,
'secret': secret_key,
'auth_code': authorization_code,
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post(token_url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
return response.json()
else:
print(f"Error: Received status code {response.status_code}")
print(f"Response content: {response.content.decode()}")
return None注意事项
- API 版本: 请确保使用的 API 版本是最新的,或者与您的应用配置相匹配。不同版本的 API 在端点和参数上可能存在差异。
- 参数验证: 仔细检查 app_id、secret_key 和 authorization_code 是否正确无误。
- 网络环境: 确保您的网络连接正常,并且能够访问 TikTok 的 API 端点。
总结
通过修改 API 端点、调整请求参数和设置正确的 Content-Type,可以有效解决 TikTok Business API OAuth2 授权码过期的问题。在开发过程中,仔细阅读官方文档,并参考社区经验,可以帮助您更快地解决遇到的问题。











