欢迎光临
我们一直在努力

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

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

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

文章标签:Python、百度网盘API、OAuth2.0、网盘下载、requests接口开发、自动化运维

阅读难度:零基础入门

适配环境:Python3.7+、Windows/Linux/macOS全平台通用

博文前言:网上大部分网盘API教程密钥泄露、代码残缺、接口报错、Token不会续期,本文从零梳理百度网盘官方OAuth2.0授权全流程,全文已处理私密密钥、Token、应用密钥,零基础复制代码、填入自己参数即可一键运行。完整实现:账号授权拿码、Token自动刷新、查询网盘容量、遍历网盘目录、获取文件直链、流式下载本地六大功能,同时复盘全网高频报错解决方案,新手避坑一站式自学。


一、前置准备工作

1.1 依赖库安装

仅需安装网络请求核心库,无第三方复杂依赖,终端执行安装命令:

pip install requests

1.2 百度开放平台应用注册

  • 进入百度开放平台,个人开发者注册入驻

  • 创建桌面应用,授权权限勾选:basic、netdisk

  • 回调地址固定填写:oob

  • 创建完成后获取:client_id应用ID、client_secret应用密钥,自行保存备用


  • 二、网盘OAuth2.0标准授权流程

    百度网盘接口全部采用标准授权码模式,整套流程三步完成,适配所有网盘业务接口调用。

    2.1 第一步:浏览器授权获取一次性Code

    通用授权链接模板

    https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=你的应用ID&scope=basic,netdisk&display=popup&redirect_uri=oob

    操作流程:

  • 浏览器打开链接,登录个人百度网盘账号,允许应用授权读写网盘数据

  • 页面直接展示一串授权Code,Code仅可使用一次,兑换Token后立即失效

  • 2.2 第二步:Code兑换业务Token

    Token兑换接口地址

    https://openapi.baidu.com/oauth/2.0/token

    固定请求参数

    • grant_type:authorization_code

    • client_id:个人应用ID

    • client_secret:个人应用密钥

    • code:上一步获取的一次性授权码

    • redirect_uri:oob

    2.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续期,所有私密信息全部占位,无泄露风险。

    import json
    import requests

    # ===================== 【自定义配置区 仅此处修改个人参数】 =====================
    # 百度开放平台应用密钥
    CLIENT_ID = \”替换为自己的client_id\”
    CLIENT_SECRET = \”替换为自己的client_secret\”
    # 首次授权获取的长效刷新Token
    REFRESH_TOKEN = \”替换为自己的refresh_token\”
    # 网盘IoT设备ID,不用设备接口可随意填写
    DEVICE_ID = \”自定义设备编号\”
    # 网盘目标文件夹路径 格式务必以/开头结尾
    PAN_TARGET_DIR = \”/网盘文件夹路径/\”
    # 全局请求UA(网盘接口必填)
    PAN_HEADERS = {


    \”User-Agent\”: \”pan.baidu.com\”
    }
    # ============================================================================

    def refresh_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,

    赞(0)
    未经允许不得转载:171主机测评 » Python对接百度网盘OpenAPI最全教程|OAuth授权\\+自动续Token\\+读取文件\\+直链下载
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址