百度网盘OAuth2.0授权码模式,获取/刷新access_token。触发词:百度网盘授权、baidu pan auth、access_token过期、refresh_token刷新、百度网盘token。适用场景:(1)首次授权获取token (2)token过期后刷新 (3)定时刷新token保活。
已有百度网盘开放平台应用( https://pan.baidu.com/union/doc/al0rwqzzl),.env文件含AppKey和SecretKey。
参考 assets/example.env 创建.env文件,填入实际凭据。
Step 1 — 浏览器打开授权页:
text
https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id={AppKey}&redirect_uri=oob&scope=basic,netdisk&device_id={AppID}
用户登录→点授权→页面显示授权码code(10分钟有效,仅一次)
Step 2 — 换取Token:
bash
python3 scripts/auth.py code <code> </path/to/.env>
成功后.env自动更新AccessToken/RefreshToken/ExpiresIn/Scope/AuthDate
Step 3 — 验证:
bash
curl -s 'https://pan.baidu.com/rest/2.0/xpan/nas?method=uinfo&access_token={AccessToken}' -H 'User-Agent: pan.baidu.com'
返回errno=0即有效。
access_token有效期30天。过期后用refresh_token刷新:
bash
python3 scripts/auth.py refresh </path/to/.env>
刷新后.env自动更新所有token字段(含新refresh_token)。旧refresh_token立即失效。
建议每25天自动刷新,避免token过期。通过cron定时任务实现:
text
cron add → schedule: {"kind":"every","everyMs":2160000000}(25天)
→ payload.message: "执行百度网盘token刷新:运行 python3 <skill_path>/scripts/auth.py refresh </path/to/.env>,报告结果"
→ sessionTarget: isolated
或用CLI:
bash
openclaw cron add --name "百度网盘token刷新" --every 25d --session isolated \
--message "执行百度网盘token刷新:运行 python3 <skill_path>/scripts/auth.py refresh </path/to/.env>,报告结果"
参数值说明redirect_urioob必须与开放平台配置一致code有效期10分钟仅一次access_token有效期30天刷新后旧token失效refresh_token有效期10年仅一次使用,刷新后返回新refresh_tokenscopebasic,netdisk固定值
error: invalid_grant → code过期或已使用,重新授权error: invalid_refresh_token → refresh_token已用或过期,需重新授权(Step 1)