-
官方文档地址:百度网盘开放平台简介 (baidu.com)
-
官方接口文档:获取用户信息 (baidu.com)
获取code(最好是先登录百度账号,可以直接获取用户信息,否则还需要先登录认证),下面的链接即获取code的链接(如果没有回调的话,redirect_uri默认为oob):
GET http://openapi.baidu.com/oauth/2.0/authorize?
response_type=code&
client_id=您应用的AppKey&
redirect_uri=您应用的授权回调地址&
scope=basic,netdisk&
device_id=您应用的AppID
以上链接示例中参数仅给出了必选参数,其中device_id为硬件应用下的必选参数。
关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。参数:
- client_id:必须参数,注册应用时获得的API Key。
- response_type:必须参数,此值固定为“code”。
- redirect_uri:必须参数,授权后要回调的URI,即接收Authorization Code的URI。如果用户在授权过程中取消授权,会回调该URI,并在URI末尾附上error=access_denied参数。对于无Web Server的应用,其值可以是“oob”,此时用户同意授权后,授权服务会将Authorization Code直接显示在响应页面的页面中及页面title中。非“oob”值的redirect_uri按照如下规则进行匹配:
- (1)如果开发者在“授权安全设置”中配置了“授权回调地址”,则redirect_uri必须与“授权回调地址”中的某一个相匹配;
- (2)如果未配置“授权回调地址”,redirect_uri所在域名必须与开发者注册应用时所提供的网站根域名列表或应用的站点地址(如果根域名列表没填写)的域名相匹配
GET http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=MsfpdXyapWkNsNll1tC37AadjnzqvCQN&redirect_uri=oob&scope=basic,netdisk&device_id=33195921
5be61f064f4d0eed45cae5bf1edf192a
这个有点傻,输入账号密码并通过旋转验证得到的授权,在服务器端玩个p呢
应该可以刷新token的,后面再试下,先换取AccessToken凭证
通过上述 1 拿到的用户授权码 Code 换取 Access Token 凭证。
换取 Access Token,依赖于以下链接:
GET https://openapi.baidu.com/oauth/2.0/token?
grant_type=authorization_code&
code=用户授权码 Code 值&
client_id=您应用的AppKey&
client_secret=您应用的SecretKey&
redirect_uri=您应用设置的授权回调地址
以上链接示例中参数仅给出了必选参数。
关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。我的:
https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=5be61f064f4d0eed45cae5bf1edf192a&client_id=MsfpdXyapWkNsNll1tC37AadjnzqvCQN&client_secret=CvaijgF9FPOEDxeKD21p69LoCfLBIsSl&redirect_uri=oob
浏览器输入即可。
{
"expires_in": 2592000,
"refresh_token": "122.78d3afc8dcc8306d8266e003176c9bd9.Y7wjChgKRLMxxaA6m8Uch1t_5Y1U5KA2S6jMvDS.jU2PHg",
"access_token": "121.735c6353301ce30a0a0edbdb2aea84d6.Y7hQIfMXBqPpmm3eFeF6tJCeBIYNf5ONwbete0p.8pwFVA",
"session_secret": "",
"session_key": "",
"scope": "basic netdisk"
}官方Python示例:
import requests
url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=d5a53cd0ca7799d033399487b23ec992&client_id=EVaI5x0U6lEmP125G0Su55ROEXZtItdD&client_secret=VPgfmrt8UBM5kgkeUemwRVmr5AjhFuEV&redirect_uri=oob"
payload = {}
headers = {
'User-Agent': 'pan.baidu.com'
}
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))GET https://openapi.baidu.com/oauth/2.0/token?
grant_type=refresh_token&
refresh_token=Refresh Token的值&
client_id=您应用的AppKey&
client_secret=您应用的SecretKey
以上链接示例中参数仅给出了必选参数。 关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。 关于 Refresh Token的值,在换取 Access Token 凭证时,您可在响应信息中拿到。
https://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token=122.78d3afc8dcc8306d8266e003176c9bd9.Y7wjChgKRLMxxaA6m8Uch1t_5Y1U5KA2S6jMvDS.jU2PHg&client_id=MsfpdXyapWkNsNll1tC37AadjnzqvCQN&client_secret=CvaijgF9FPOEDxeKD21p69LoCfLBIsSl
{
"expires_in": 2592000,
"refresh_token": "122.f7045bd6e2d9f7128a495bfd14607ab5.Y3UbvhApRWfZKsQiu9FA-SKdIJgtsZn7zGArW9O.qB6LFw",
"access_token": "121.b1115977fd33f6d39de045c6565739f6.YBS4690TbRYaA2-PXNsP15xofeTixe-omHvLpEw.r048Hg",
"session_secret": "",
"session_key": "",
"scope": "basic netdisk"
}所以,理论上登陆一次就应该可以了
获取用户access_token后,是否可以将文件上传到用户的网盘?
作为开发者在获取到用户access_token后,是可以将文件上传到用户的网盘而非开发者的网盘。
更多帮助内容可查看https://pan.baidu.com/union/doc/0ksg0sbig
- 官方接口文档:获取用户信息 (baidu.com)
- 官方SDK:Python SDK使用入门 (baidu.com)
直接下载SDK,参考接口文档,用上面获取到的access_token进行测试:
通的。
后面就用代码编写即可。
贴一下接口列表吧,还是功能丰富的
| 接口功能 | 类 | 方法 | HTTP 请求 |
|---|---|---|---|
| 授权码模式-用户授权码 Code 换取 Access Token 凭证 | AuthApi | oauth_token_code2token | GET /oauth/2.0/token?grant_type=authorization_code&openapi=xpansdk |
| 设备码模式-获取设备码、用户码 | AuthApi | oauth_token_device_code | GET /oauth/2.0/device/code?response_type=device_code&openapi=xpansdk |
| 设备码模式-用 Device Code 轮询换取 Access Token | AuthApi | oauth_token_device_token | GET /oauth/2.0/token?grant_type=device_token&openapi=xpansdk |
| 授权码模式-刷新 Access Token | AuthApi | oauth_token_refresh_token | GET /oauth/2.0/token?grant_type=refresh_token&openapi=xpansdk |
| 获取文件信息-获取文档列表 | FileinfoApi | xpanfiledoclist | GET /rest/2.0/xpan/file?method=doclist&openapi=xpansdk |
| 获取文件信息-获取图片列表 | FileinfoApi | xpanfileimagelist | GET /rest/2.0/xpan/file?method=imagelist&openapi=xpansdk |
| 获取文件信息-获取文件列表 | FileinfoApi | xpanfilelist | GET /rest/2.0/xpan/file?method=list&openapi=xpansdk |
| 获取文件信息-搜索文件 | FileinfoApi | xpanfilesearch | GET /rest/2.0/xpan/file?method=search&openapi=xpansdk |
| 管理文件-文件复制 | FilemanagerApi | filemanagercopy | POST /rest/2.0/xpan/file?method=filemanager&opera=copy&openapi=xpansdk |
| 管理文件-文件删除 | FilemanagerApi | filemanagerdelete | POST /rest/2.0/xpan/file?method=filemanager&opera=delete&openapi=xpansdk |
| 管理文件-文件移动 | FilemanagerApi | filemanagermove | POST /rest/2.0/xpan/file?method=filemanager&opera=move&openapi=xpansdk |
| 管理文件-文件重命名 | FilemanagerApi | filemanagerrename | POST /rest/2.0/xpan/file?method=filemanager&opera=rename&openapi=xpansdk |
| 文件上传-预上传 | FileuploadApi | xpanfileprecreate | POST /rest/2.0/xpan/file?method=precreate&openapi=xpansdk |
| 文件上传-分片上传 | FileuploadApi | pcssuperfile2 | POST /rest/2.0/pcs/superfile2?method=upload&openapi=xpansdk |
| 文件上传-创建文件 | FileuploadApi | xpanfilecreate | POST /rest/2.0/xpan/file?method=create&openapi=xpansdk |
| 获取文件信息-递归获取文件列表 | MultimediafileApi | xpanfilelistall | GET /rest/2.0/xpan/multimedia?method=listall&openapi=xpansdk |
| 获取文件信息-查询文件信息 | MultimediafileApi | xpanmultimediafilemetas | GET /rest/2.0/xpan/multimedia?method=filemetas&openapi=xpansdk |
| 获取网盘容量信息 | UserinfoApi | apiquota | GET /api/quota?openapi=xpansdk |
| 获取用户信息 | UserinfoApi | xpannasuinfo | GET /rest/2.0/xpan/nas?method=uinfo&openapi=xpansdk |
上传流程是指,用户将本地文件上传到百度网盘云端服务器的过程。文件上传分为三个阶段:预上传、分片上传、创建文件。第二个阶段分片上传依赖第一个阶段预上传的结果,第三个阶段创建文件依赖第一个阶段预上传和第二阶段分片上传的结果,串行完成这三个阶段任务后,本地文件成功上传到网盘服务器。
dict_values(['d05f84cf5340d1ef0c5f6d6eb8ce13b8', 2960608591428628250])




