百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token

阿丹:

        这一段接触了项目有比较严谨和复杂的业务需要文件的对接。这会让办公体验很糟糕,于是想到使用百度网盘来将文件存在云端。

进入百度开放平台进行注册

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第1张图片

首先要进行注册

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第2张图片

创建一个自己的应用

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第3张图片

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第4张图片

 创建成功我们就会获得一个

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第5张图片

 这些密钥信息和基本信息就是用来连接咱们的这个应用的关键。

进入百度网盘开放平台进行获取授权

阿丹:推荐使用授权码来接受授权

百度网盘开放平台

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第6张图片

 根据流程来获取。

阿丹提示:

        之前在使用另外一个百度官方的api接口文档的时候发现里面在构建一会的请求的时候会出现无法构建的问题。基本上是说咱们的应用没有权限等。如果出现这个错误使用我上面给的连接,使用这个文档按照步骤在去访问就没有问题。

流程图:

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第7张图片

阿丹解读:

        主要流程就是通过下面构建的请求拿到一个Code,然后使用这个code去换取Access Token来进行文件的上传操作。

发起授权码Code请求

http://openapi.baidu.com/oauth/2.0/authorize?
response_type=code&
client_id=您应用的AppKey&
redirect_uri=您应用的授权回调地址&
scope=basic,netdisk&
device_id=您应用的AppID

以上链接示例中参数仅给出了必选参数,其中device_id为硬件应用下的必选参数。
关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。

将这个链接中的参数等进行构建,根据自己的应用来完成

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第8张图片

阿丹小贴士:

         redirect_uri=您应用的授权回调地址&这个参数是使用成功后要进行回调的地址,如果有需要的话要进行配置,具体配置在下面点击进入可以查看文档。授权回调地址   ​​​​​​http://developer.baidu.com/wiki/index.php?title=docs/oauth/redirect

如果不需要构建这个地址的时候就使用官方默认的参数即可“oob”,使用oob

redirect_uri=oob&就可以了。

换取AccessToken凭证

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第9张图片

GET https://openapi.baidu.com/oauth/2.0/token?
grant_type=authorization_code&
code=用户授权码 Code 值&
client_id=您应用的AppKey&
client_secret=您应用的SecretKey&
redirect_uri=您应用设置的授权回调地址

以上链接示例中参数仅给出了必选参数。
关于应用的相关信息,您可在控制台,点进去您对应的应用,查看应用详情获得。

根据我们获得的信息来构建连接,其实就是使用我们这个刚获取的code来换取一个可以进行使用的Access Token。

我们对我们的连接进行了访问,可拿到返回值。是一个JSON形式的返回值来包装的。里面包含了我需要的token.

 使用文档下面的案例就能在代码中进行使用这些功能。

java案例演示


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpGetRequestExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=d5a53cd0ca7799d033399487b23ec992&client_id=EVaI5x0U6lEmP125G0Su55ROEXZtItdD&client_secret=VPgfmrt8UBM5kgkeUemwRVmr5AjhFuEV&redirect_uri=oob");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } catch (Exception e) {
            System.out.println(e);
        }
    }
} 

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

 响应示例:


{
expires_in: 2592000,
refresh_token: "122.2959fe0da8c91d522099c5dca1b5608f.YDUwKsc1DS89VaP2DogevEN15cD65vXLtZ7bHHe.DbEWAW",
access_token: "121.fd4b4277dba7a65a51cf370d0e83f567.Y74pa1cYlIOT_Vdp2xuWOqeasckh1tWtxT9Ouw5.LPOBOA",
session_secret: "",
session_key: "",
scope: "basic netdisk"
}

其中可以拿到access_token,另外注意也可以拿到refresh_token、expires_in等值。

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第10张图片

 到这里就已经拿到了Access Token,完成了一次授权。

重点参数:

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第11张图片

 百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第12张图片

 我们可以看到上面有一个返回值refresh_token是因为Access Token是会过期的。

刷新 Access Token

我们可以根据我们上面获得的refresh_token来进行对AccessToken的刷新

官方提供了这个链接,告诉我们可以使用

refresh_token=Refresh Token的值&

来获取刷新的Access Token 

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

 java示例;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpGetRequestExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token=122.2959fe0da8c91d522099c5dca1b5608f.YDUwKsc1DS89VaP2DogevEN15cD65vXLtZ7bHHe.DbEWAW&client_id=EVaI5x0U6lEmP125G0Su55ROEXZtItdD&client_secret=VPgfmrt8UBM5kgkeUemwRVmr5AjhFuEV");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());
        } catch (Exception e) {
            System.out.println(e);
        }
    }
} 

 python示例


import requests

url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token=122.2959fe0da8c91d522099c5dca1b5608f.YDUwKsc1DS89VaP2DogevEN15cD65vXLtZ7bHHe.DbEWAW&client_id=EVaI5x0U6lEmP125G0Su55ROEXZtItdD&client_secret=VPgfmrt8UBM5kgkeUemwRVmr5AjhFuEV"

payload = {}
headers = {
  'User-Agent': 'pan.baidu.com'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

响应示例:


{
expires_in: 2592000,
refresh_token: "122.51265f007055bc895cb02c639410a90d.YDLFcE2nee3Cyu-Bsn7SAFVCAfdCkvSm4EnCdkO.Zs_FiQ",
access_token: "121.60bf4c9911cb554aac39a1c701a4dae8.YDjwYds0zFgbM1rifQhjMLwsfb6xYus5tUhNEoA.XNNoOQ",
session_secret: "",
session_key: "",
scope: "basic netdisk"
}

百度开放平台申请认证调用百度api等(百度网盘上传,下载申请)面向百度开发-百度云盘(1)完成申请-获取用户授权码 Code 值,获取access_token和refresh_token更新token_第13张图片

你可能感兴趣的:(百度开放平台,百度)