百度云网盘授权登陆

注册

首先是注册,然后是实名认证,这个就不说了,按照提示一步一步来就行。

创建应用

应用名称自己想填什么就填什么,创建应用后,会生成AppID,AppKey,Secretkey,Signkey。这个是项目里需要用的,保存好。

设置授权回调地址

1.应用创建成功后,可以进入【应用详情】页,右上角【安全设置】,设置授权回调地址。

2.安全设置页面如下:

授权码模式授权

我在网上也搜了一些关于百度网盘授权文章看了看,发现写的都是稀里糊涂的。所以这才想着写一个详细的,让人清清楚楚,明明白白的文章。

1. 发起授权码 Code 请求

ini 复制代码
 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为硬件应用下的必选参数。
 关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。

我一开始以为是要后端去请求这个地址,把返回结果给前端。后来发现不是这样的...

第一个是可以直接请求的,把参数替换后,粘在浏览器url框里,回车就行。也可以调后端接口,让后端拼好url,前端直接打开这个url

所以就叫它半个接口吧。

还有一点要注意的是redirect_uri,回调地址。这个东西好像只能用域名,所以想要测试,成本就有点高。

虽然之前的服务器到期了,但是还好我之前的域名还一直在续费。这次咬咬牙又搞了一台轻量服务器。

配置的回调地址:www.yunask.cn/bd/code/sav...

前置工作比较多,简单说一下

  1. nginx安装配置
  2. 配置https证书(非https也可以,不是必要的)
  3. 开发一个项目,部署到服务器上(可以写个很简单的接口,比如下面这样)
typescript 复制代码
 @GetMapping("/save")
 public HttpResult<String> save(String code) {
     Assert.isTrue(StringUtils.isNotBlank(code), "code不能为空!");
     log.info("CodeController_save_code:{}", code);
     return HttpResult.success(code);
 }

直接访问

后端先拼接url

直接打开返回的url

如果用户扫码或者选择普通登陆,登录成功之后,就会回调你配的那个回调地址,我配的是

www.yunask.cn/bd/code/sav...

  • display 这个参数控制授权页面的展示方式

接下来就到第二步了。

2. 换取 AccessToken 凭证

ini 复制代码
 GET https://openapi.baidu.com/oauth/2.0/token?
 grant_type=authorization_code&
 code=用户授权码 Code 值&
 client_id=您应用的AppKey&
 client_secret=您应用的SecretKey&
 redirect_uri=您应用设置的授权回调地址
 ​
 以上链接示例中参数仅给出了必选参数。
 关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。

回调接口/code/save,会把code作为参数传进来。这个时候,有了code,就可以调上面的api获取Access Token了,这个要后端去调的。

再说一下返回的参数:

  • access_token:后续调其他接口要使用,比如获取网盘容量信息,文件列表等等,所以最好存起来。
  • expires_in:这个是过期时间,单位是秒。可以加上当前时间,计算出过期时间,然后存到数据库,快过期的时候,通过定时任务去刷新 access_token,一般有效期是30天。
  • refresh_token:这个就是下面刷新 access_token 需要的参数,也要存起来,有效期十年,所以相当于用户授权一次,有效期十年。

3. 刷新 Access Token

ini 复制代码
 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 凭证时,您可在响应信息中拿到。

Access Token 要过期了,可以用之前存的 refresh_token 去刷新 Access Token

也是后端调的。

主要的就是这三个接口,或者说是两个半。

到这里授权码模式基本就结束了。

简化模式授权

这个比较简单,就简单说一下吧。

1.发起 Access Token 请求

ini 复制代码
 http://openapi.baidu.com/oauth/2.0/authorize?response_type=token&
 client_id=您应用的AppKey&
 redirect_uri=您应用的授权回调地址&
 scope=basic,netdisk

文档里说:这种方式适合没有服务端的小程序或者App

首先替换url中的参数,然后直接打开这个url就可以了。

  • redirect_uri:主要还是靠这个回调地址来收集数据

请求该链接后,用户可选择是否登录并授权。 如果用户同意登录并授权,则页面跳转至一个链接,链接具体组成如下:

ini 复制代码
 您应用配置的回调地址#
 access_token=xxx&
 expires_in=xxx&
 session_secret=xxx&
 session_key=xxx&
 scope=basic+netdisk

即可获取到 Access Token 凭证。 接下来,拿着 Access Token 凭证就可以调用百度网盘公开API,访问用户信息以及授权资源了。

我觉得回调地址应该是个接口吧,这些参数会传到接口里,然后再保存到数据库。那应该还是需要一个Server的。

而且这个没有refresh_token,无法刷新access_token

所以我觉得这个简化模式还没有授权码模式好用,当然啦,仁者见仁。

今天就到这里,下次再见。

相关推荐
tqs_1234531 分钟前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃1 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
GreenTea1 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt2 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet2 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea2 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持2 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
niucloud-admin2 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
海宇AI3 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
Bs_MoneyMagnet4 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计