以下所有方法中的 options 参数是额外请求配置,详见 AxiosRequestConfig。
如何获取 token?
token 的获取可以有多种方案,根据应用类型,具体获取方法请看:应用概述。
本篇所有方法均为获取 Token 相关方法,构造函数传参 auth_endpoint
即可:
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
getUserJwtToken 方法
新增于:v0.1.2
此为使用 JWT 快速接入 PDS 时用来获取用户token的方法。
首先需要在 PDS 控制台创建 JWT 应用,配置好公钥,获取到私钥。然后使用 JWT 应用ID和私钥来获取用户 Token。
注意:此方法仅 node.js
适用。
const result = await client.getUserJwtToken(params, options)
举例
const domain_id = '您的DomainID'
const client_id = '您的JWT应用ID'
const privary_key_pem = '您的私钥'
const user_id = '要获取token的用户ID'
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
const params = {
domain_id,
client_id,
private_Key_pem,
user_id,
auto_create: false, // 没有该用户是否自动创建
}
const jwtToken = await client.getUserJwtToken(params)
参数说明
字段 | 类型 | 必选 | 说明 |
params | IGetUserJwtTokenReq | 是 | 参数 |
options | AxiosRequestConfig | 其他可选配置 |
IGetUserJwtTokenReq
字段 | 类型 | 必选 | 说明 |
client_id | string | 是 | JWT应用ID。 |
private_key_pem | string | 是 | 私钥 pem 字符串。 |
domain_id | string | 是 | DomainID。 |
user_id | string | 是 | 用户唯一标识,由接入方保证其在Domain级别的唯一性。 |
auto_create | boolean | 没有该用户时是否自动创建,如果domain 上配置了初始化云盘,自动创建用户时还会自动为用户创建初始化云盘。默认 false。 |
返回
字段 | 类型 | 必选 | 说明 |
result | ITokenInfo | 是 | 代表用户身份的token |
ITokenInfo
字段 | 类型 | 必须 | 说明 |
access_token | string | 是 | 代表用户身份的 |
refresh_token | string | 刷新 | |
expire_time | string |
| |
expires_in | string |
| |
token_type | string |
| |
user_id | string | 当前用户唯一标识。 | |
role | string | 当前用户角色。 | |
...其他字段 | 其他字段请看Token。 |
ITokenInfo举例
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cC******AKBkbYjejHYX3d42VzSZ70",
"refresh_token": "a5a1ebadaba6*****27f4122",
"expires_in": 7200,
"token_type": "Bearer",
"user_id": "4b14efc*****6f63740",
"user_name": "用户1",
"avatar": "",
"nick_name": "用户1",
"default_drive_id": "1",
"role": "user",
"status": "enabled",
"expire_time": "2022-02-16T07:59:14Z",
"is_first_login": false,
"domain_id": "daily21453"
}
getServiceJwtToken 方法
新增于:v0.1.2
此方法用于获取 Domain 的服务账号的 Token。该 Token 拥有超级管理员权限,一般用来做运维管理操作。
注意:此方法仅 node.js
适用。
const result = await client.getServiceJwtToken(params, options)
举例
const domain_id = '您的DomainID'
const client_id = '您的JWT应用ID'
const privary_key_pem = '您的私钥'
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
const params = {
domain_id,
client_id,
private_Key_pem
}
const jwtToken = await client.getServiceJwtToken(params)
参数说明
字段 | 类型 | 必选 | 说明 |
params | IGetServiceJwtTokenReq | 是 | 参数 |
options | AxiosRequestConfig | 其他可选配置 |
IGetServiceJwtTokenReq
字段 | 类型 | 必选 | 说明 |
client_id | string | 是 | JWT应用ID。 |
private_key_pem | string | 是 | 私钥 pem 字符串。 |
domain_id | string | 是 | DomainID。 |
返回
字段 | 类型 | 必选 | 说明 |
result | ITokenInfo | 是 | 代表Domain超级管理员身份的服务账号的token |
refreshJwtToken 方法
新增于:v0.1.2
此方法可以用来刷下JwtToken。
jwtTokenInfo
中的 access_token
的有效期为2小时, refresh_token
的有效期为7天。
在refresh_token
的有效期内,无论 access_token
是否过期,都可以调用此方法来获取新的 token。
刷新 jwtTokenInfo
会返回新的 jwtTokenInfo
,旧的 jwtTokenInfo
会失效。
const result = await client.refreshJwtToken(params, options)
举例
const client_id = '您的JWT应用ID'
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
const params = {
client_id,
refresh_token: 'xxxxxxx'
}
const jwtToken = await client.refreshJwtToken(params)
参数说明
字段 | 类型 | 必选 | 说明 |
params | IRefreshJwtTokenReq | 是 | 参数 |
options | AxiosRequestConfig | 其他可选配置 |
IRefreshJwtTokenReq
字段 | 类型 | 必选 | 说明 |
client_id | string | 是 | JWT应用ID。 |
refresh_token | string | 是 | 为过期的 jwtToken中的refresh_token。 |
返回
字段 | 类型 | 必选 | 说明 |
result | ITokenInfo | 是 | 刷新后的 jwtToken。 |
getTokenByCode 方法
新增于:v0.1.2
此方法可以根据 OAuth 流程中得到的一次性 code,来换取用户 Token。
关于OAuth流程请看: 获取 OAuth2.0 Access Token 步骤
const result = await client.getTokenByCode(params, options)
举例
const client_id = '您的OAuth应用ID'
const client_secret = '您的OAuth应用密钥'
const redirect_uri = '您的OAuth应用回调地址'
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
const params = {
client_id,
client_secret
redirect_uri,
code: 'xxxxxxx' // OAuth应用流程中得到的一次性code
}
const token = await client.getTokenByCode(params)
参数说明
字段 | 类型 | 必选 | 说明 |
params | IGetTokenByCodeReq | 是 | 参数 |
options | AxiosRequestConfig | 其他可选配置 |
IGetTokenByCodeReq
字段 | 类型 | 必选 | 说明 |
client_id | string | 是 | OAuth应用ID。 |
client_secret | string | OAuth应用Secret。 webserver类型的应用必选。 | |
redirect_url | string | 是 | OAuth应用回调地址 |
code | string | 是 | OAuth应用流程中得到的一次性code |
返回
字段 | 类型 | 必选 | 说明 |
result | ITokenInfo | 是 | 代表用户身份的token |
refreshToken 方法
新增于:v0.1.2
此方法可以用来刷新 OAuth 流程获取的 tokenInfo。
tokenInfo
中的 access_token
的有效期为2小时, refresh_token
的有效期为7天。
在refresh_token
的有效期内,无论 access_token
是否过期,都可以调用此方法来获取新的 token。
刷新 tokenInfo
会返回新的 tokenInfo
,旧的 tokenInfo
会失效。
const result = await client.refreshToken(params, options)
举例:
const client_id = '您的OAuth应用ID'
const client_secret = '您的OAuth应用密钥'
const redirect_uri = '您的OAuth应用回调地址'
const client = new PDSClient({
auth_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
const params = {
client_id,
client_secret
redirect_uri,
refresh_token: 'xxxxxxx'
}
const token = await client.refreshToken(params)
参数说明
字段 | 类型 | 必选 | 说明 |
params | IRefreshTokenReq | 是 | 参数 |
options | AxiosRequestConfig | 其他可选配置 |
IRefreshTokenReq
字段 | 类型 | 必选 | 说明 |
client_id | string | 是 | OAuth应用ID。 |
client_secret | string | OAuth应用Secret。 webserver类型的应用必选。 | |
redirect_url | string | 是 | OAuth应用回调地址。 |
refresh_token | string | 是 | 为过期的tokenInfo中的refresh_token。 |
结果
字段 | 类型 | 必选 | 说明 |
result | ITokenInfo | 是 | 刷新后的token。 |