Dropbox只读Python API:如何获取永不失效的API Token?
解决Dropbox只读Python API Token过期问题
- 先确认Token类型:Dropbox普通访问令牌是短期有效,必然会过期。要拿到长期有效的凭证,必须用刷新令牌(refresh token)。操作步骤:
- 登录Dropbox开发者控制台,找到你的应用;
- 进入「Permissions」页面,勾选所需的只读权限(比如
files.metadata.read、files.content.read); - 切换到「Settings」的「OAuth 2」板块,将访问类型设置为
offline——只有开启这个选项,授权流程才会返回刷新令牌。
- 重新获取含刷新令牌的授权:走OAuth授权流程时,请求参数必须包含
scope指定你的只读权限,grant_type设为authorization_code,同时带上授权码、应用ID和应用密钥。返回结果里的refresh_token就是长期有效(除非手动在控制台撤销)。 - 在Python中自动刷新令牌:每次调用API前,若访问令牌过期,用刷新令牌换取新的访问令牌即可。示例代码:
import dropbox from dropbox.exceptions import AuthError import requests def refresh_access_token(refresh_token, client_id, client_secret): url = "https://api.dropboxapi.com/oauth2/token" payload = { "grant_type": "refresh_token", "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret } resp = requests.post(url, data=payload) if resp.ok: return resp.json()["access_token"] raise AuthError("刷新令牌失败", resp) # 替换为你的实际参数 REFRESH_TOKEN = "你的刷新令牌" CLIENT_ID = "你的应用ID" CLIENT_SECRET = "你的应用密钥" try: new_access_token = refresh_access_token(REFRESH_TOKEN, CLIENT_ID, CLIENT_SECRET) dbx = dropbox.Dropbox(new_access_token) # 执行只读操作,比如列出指定目录内容 folder_result = dbx.files_list_folder("/") for entry in folder_result.entries: print(entry.name) except AuthError as e: print(f"认证出错: {e}")
- 最后检查令牌状态:回到开发者控制台的「OAuth 2」->「Tokens」页面,确认刷新令牌存在,且应用权限确实为只读。如果之前授权未开启
offline,必须重新走授权流程获取新的刷新令牌。
内容的提问来源于stack exchange,提问作者Fran Stanić
相关产品推荐
相关产品推荐

