Python对接百度网盘OpenAPI最全教程|OAuth授权\+自动续Token\+读取文件\+直链下载

📅 2026/6/17 19:48:59
Python对接百度网盘OpenAPI最全教程|OAuth授权\+自动续Token\+读取文件\+直链下载
Python对接百度网盘OpenAPI最全教程|OAuth授权+自动续Token+读取文件+直链下载文章标签:Python、百度网盘API、OAuth2.0、网盘下载、requests接口开发、自动化运维阅读难度:零基础入门适配环境:Python3.7+、Windows/Linux/macOS全平台通用博文前言:网上大部分网盘API教程密钥泄露、代码残缺、接口报错、Token不会续期,本文从零梳理百度网盘官方OAuth2.0授权全流程,全文已处理私密密钥、Token、应用密钥,零基础复制代码、填入自己参数即可一键运行。完整实现:账号授权拿码、Token自动刷新、查询网盘容量、遍历网盘目录、获取文件直链、流式下载本地六大功能,同时复盘全网高频报错解决方案,新手避坑一站式自学。一、前置准备工作1.1 依赖库安装仅需安装网络请求核心库,无第三方复杂依赖,终端执行安装命令:pip install requests1.2 百度开放平台应用注册进入百度开放平台,个人开发者注册入驻创建桌面应用,授权权限勾选:basic、netdisk回调地址固定填写:oob创建完成后获取:client_id应用ID、client_secret应用密钥,自行保存备用二、网盘OAuth2.0标准授权流程百度网盘接口全部采用标准授权码模式,整套流程三步完成,适配所有网盘业务接口调用。2.1 第一步:浏览器授权获取一次性Code通用授权链接模板https://openapi.baidu.com/oauth/2.0/authorize?response_type=codeclient_id=你的应用IDscope=basic,netdiskdisplay=popupredirect_uri=oob操作流程:浏览器打开链接,登录个人百度网盘账号,允许应用授权读写网盘数据页面直接展示一串授权Code,Code仅可使用一次,兑换Token后立即失效2.2 第二步:Code兑换业务TokenToken兑换接口地址https://openapi.baidu.com/oauth/2.0/token固定请求参数grant_type:authorization_codeclient_id:个人应用IDclient_secret:个人应用密钥code:上一步获取的一次性授权码redirect_uri:oob2.3 Token字段详解{"expires_in":2592000,"refresh_token":"长效续期凭证","access_token":"接口调用凭证","scope":"basic netdisk"}expires_in:2592000秒等于30天,access_token自动过期access_token:调用网盘查询、下载接口核心凭证refresh_token:长期有效续期密钥,无需重新登录即可刷新新Token,刷新后旧密钥失效2.4 授权流程报错复盘本次实测问题:调用token兑换接口提示网页解析失败,不支持网页类型,属于平台接口响应格式变更,直接使用代码请求即可,浏览器访问会报错,不影响代码调用。三、全功能可运行代码代码已完成全部优化:去除冗余导入、增加异常捕获、日志分离、大文件流式下载、防参数拼接报错、自动Token续期,所有私密信息全部占位,无泄露风险。importjsonimportrequests# ===================== 【自定义配置区 仅此处修改个人参数】 =====================# 百度开放平台应用密钥CLIENT_ID="替换为自己的client_id"CLIENT_SECRET="替换为自己的client_secret"# 首次授权获取的长效刷新TokenREFRESH_TOKEN="替换为自己的refresh_token"# 网盘IoT设备ID,不用设备接口可随意填写DEVICE_ID="自定义设备编号"# 网盘目标文件夹路径 格式务必以/开头结尾PAN_TARGET_DIR="/网盘文件夹路径/"# 全局请求UA(网盘接口必填)PAN_HEADERS={"User-Agent":"pan.baidu.com"}# ============================================================================defrefresh_netdisk_token()-tuple:""" 自动刷新网盘AccessToken,过期无需重新登录 :return: 新业务token, 新长效刷新token """try:url="https://openapi.baidu.com/oauth/2.0/token"params={"grant_type":"refresh_token","client_id":CLIENT_ID,"client_secret":CLIENT_SECRET,