开发者须知

优质
小牛编辑
127浏览
2023-12-01

开发者须知

简介

本部分主要介绍百度网盘开放平台的接入流程,主要包括申请appid和获取用户授权。获取授权后,即可根据开发需求,依照接口的使用规则进行相应的开发。

接入流程

1.成为开发者

step1:使用百度账号登录开放平台官网

请在官网首页右上角找到登录入口,使用百度账号进行登录。如果您还没有百度账号,请按照百度账号统一注册流程进行注册。

step2: 申请账号认证并接入

登录后,点击官网首页图中【立即申请】或个人中心【申请认证账号并接入】进入申请接入页面。

在使用平台服务之前,您需要同意《百度网盘开放平台开发者服务协议》

2.创建应用

按照指示完成认证后,可前往控制台创建应用。

step1:创建应用

选择应用类别,填写应用名称、描述后,即可创建应用。

image-20210128211518763

image-20210128211649398

step2:获取Appid、ak、sk和Signkey

应用创建成功后将获取对应的Appid、AppKey(AK)、SecretKey (SK)和Signkey。

image-20210201123517387

点击接入能力,即可参照技术文档,调用接口进行接入。

step3:配置redirect_uri

应用创建成功后,可以进入【应用详情】页,右上角【安全设置】,进行授权回调地址,即第三步,获取授权时所需redirect_uri参数的配置。
授权回调地址支持配置多个,多个地址之间,通过英文逗号进行分隔。
授权回调详细说明请参考百度开发者中心帮助文档:http://developer.baidu.com/wiki/index.php?title=docs/oauth/redirect

3.获取授权

step1: 了解百度OAuth

a. OAuth2.0(开放授权): 是一个开放标准,用户授权后,第三方应用无需获取用户的用户名和密码就可以访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表)

b. Access_token: 用户身份验证和授权的凭证。第三方应用在调用百度网盘开放API之前,首先需要获取Access Token。

c. 详情信息请参考: http://developer.baidu.com/wiki/index.php?title=docs/oauth

step2: 根据自身业务场景,选择合适的授权方式

server端获取授权模式:如果应用有自己的server端,推荐使用授权码模式(grant_type=authorization code)获取授权。详情请参考一下步骤。

2.1引导用户到如下地址授权。

GET http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=basic,netdisk&display=tv&qrcode=1&force_login=1

参数说明

参数类型是否必须备注
response_typestring固定参数,必为code
client_idstring用自己应用的API key替换示例中的YOUR_CLIENT_ID
redirect_uristring授权回调地址,可在控制台应用详情页【安全配置】入口进行配置,更多说明见授权说明
scopestring固定参数,必须为basic,netdisk
displaystring授权页的展示方式,更多说明见授权说明
statestring重定向后会带上state参数。建议开发者利用state参数来防止CSRF攻击
force_loginint如传递“force_login=1”,则加载登录页时强制用户输入用户名和口令,不会从cookie中读取百度用户的登陆状态

常见错误 https://openauth.baidu.com/doc/appendix.html

2.2:如果用户同意授权,页面跳转至

YOUR_REGISTERED_REDIRECT_URI/?code=CODE

2.3 :用CODE换取Access_token

GET https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

code说明:code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,10分钟未被使用自动过期。

参数说明

参数类型是否必须备注
grant_typestring固定值,必须为authorization_code
codestring获取用户授权后得到的code
client_idstring应用的API KEY
client_secretstring应用的SECRET KEY
redirect_uristring必须与获取授权code是传递的保持一致

返回值说明

参数类型备注
access_tokenstring获取到的授权token,作为调用其他接口访问用户数据的凭证
expires_inintaccess_token的有效期,单位:秒
refresh_tokenstring用于刷新access_token, 有效期为10年
scopestringaccess_token最终的访问权限,即用户的实际授权列表

常见错误 https://openauth.baidu.com/doc/appendix.html

2.4 :刷新Access_token

GET https://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token=REFRESH_TOKEN&client_id=API_KEY&client_secret=SECRET_KEY

参数说明

参数类型是否必须备注
grant_typestring固定值,必须为refresh_token
refresh_tokenstring第三步中返回的refresh_toekn
client_idstring应用的API KEY
client_secretstring应用的SECRET KEY

返回值说明

参数类型备注
access_tokenstring获取到的授权token,作为调用其他接口访问用户数据的凭证
expires_inintaccess_token的有效期,单位:秒
refresh_tokenstring用于刷新access_token, 有效期为10年
scopestringaccess_token最终的访问权限,即用户的实际授权列表

常见错误

https://openauth.baidu.com/doc/appendix.html

移动端获取授权模式:如果应用没有自己的server端,推荐使用简化模式(implicit grant),跳过授权码步骤,直接获取access_token。

3.1: 引导用户到如下地址授权。

http://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&scope=basic,netdisk&display=popup&state=xxx

参数说明

参数参数值备注
response_typetoken固定参数
client_id应用的API KEY用自己应用的API key替换示例中的YOUR_CLIENT_ID
redirect_uri授权回调地址可在获取应用AK,SK的页面【安全配置】入口进行配置,更多说明见授权说明
scopebasic,netdisk固定参数
displaypopup授权页的展示方式,更多说明见授权说明

3.2:如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI 在Fragment中追加如下参数。

YOUR_REGISTERED_REDIRECT_URI#access_token=1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328&expires_in=86400&scope=basic%20netdisk&session_key=ANXxSNjwQDugf8615OnqeikRMu2bKaXCdlLxn&session_secret=248APxvxjCZ0VEC43EYrvxqaK4oZExMB&state=xxx

常见错误 https://openauth.baidu.com/doc/appendix.html

4.授权说明

4.1 授权回调地址

a. 对于有server的应用: 开发者必须在开发者中心预先注册应用所在的域名或URL,用以 OAuth2.0检验授权请求中的“redirect_uri”参数。以便保证OAuth2.0在回调过程中,会回调到安全域名。 avatar

b. 对于无server的应用 : 可传redirect_uri=oob。回调后会返回一个平台提供默认回调地址(http://openapi.baidu.com/oauth/2.0/login_success )

4.2 授权展示方式
display参数值参数值说明
page全屏形式的授权页面(默认),适用于web应用
popup弹框形式的授权页面,适用于桌面软件应用和web应用
dialog浮层形式的授权页面,只能用于站内web应用
mobileIphone/Android等智能移动终端上用的授权页面,适用于Iphone/Android等智能移动终端上的应用
tv电视等超大显示屏使用的授权页面
padIPad/Android等智能平板电脑使用的授权页面
4.3 其他注意事项

a. 在引导用户授权时,注意:scope参数固定传 basic,netdisk

b. 对于硬件厂商,需要在请求http://openapi.baidu.com/oauth/2.0/authorize?response_type=code时,多增加一个参数device_id,该device_id为设备注册接口返回的device_id。(参考开放平台设备管理接口文档)

c. 参考文档 https://openauth.baidu.com/doc/

通用错误码

错误码列表

错误码描述排查方向
0请求成功
2参数错误检查必填字段;
get/post 参数位置
-6身份验证失败access_token 是否有效;
部分接口需要申请对应的网盘权限
31034命中接口频控核对频控规则;
稍后再试;
申请单独频控规则
42000访问过于频繁
42001rand校验失败
42999功能下线
9100一级封禁
9200二级封禁
9300三级封禁
9400四级封禁
9500五级封禁

账号错误码

授权&登录相关错误码参考:
https://openauth.baidu.com/doc/appendix.html