Thanks to visit codestin.com
Credit goes to github.com

Skip to content

lemonguess/baiducloudserver

Repository files navigation

1. 授权管理

获取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所在域名必须与开发者注册应用时所提供的网站根域名列表或应用的站点地址(如果根域名列表没填写)的域名相匹配

1. 获取授权码

GET http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=MsfpdXyapWkNsNll1tC37AadjnzqvCQN&redirect_uri=oob&scope=basic,netdisk&device_id=33195921

image-20230505160902746

5be61f064f4d0eed45cae5bf1edf192a

这个有点傻,输入账号密码并通过旋转验证得到的授权,在服务器端玩个p呢

应该可以刷新token的,后面再试下,先换取AccessToken凭证

2. 换取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

浏览器输入即可。

image-20230505164013745

{
    "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'))

3. 刷新授权码

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

image-20230505164322338

{
    "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

2. 接口验证

直接下载SDK,参考接口文档,用上面获取到的access_token进行测试:

image-20230505165710871

通的。

后面就用代码编写即可。

贴一下接口列表吧,还是功能丰富的

接口功能 方法 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

3. 上传

上传流程是指,用户将本地文件上传到百度网盘云端服务器的过程。文件上传分为三个阶段:预上传分片上传创建文件。第二个阶段分片上传依赖第一个阶段预上传的结果,第三个阶段创建文件依赖第一个阶段预上传和第二阶段分片上传的结果,串行完成这三个阶段任务后,本地文件成功上传到网盘服务器。

截屏2022-03-08 下午4.27.54.png

dict_values(['d05f84cf5340d1ef0c5f6d6eb8ce13b8', 2960608591428628250])

About

python连接百度云盘api上传文件等

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages