Token

本文主要介绍 Token 生成和获取相关方法。

说明

如何获取 token?

token 的获取可以有多种方案,根据应用类型,具体获取方法请看:应用概述

本篇所有方法均为获取 Token 相关方法,构造函数传参 api_endpoint 即可:

const client = new PDSClient({
  api_endpoint: `https://${domain_id}.api.aliyunpds.com`
})
说明

请求参数中的 options: IPDSRequestConfig 基于 axios 的 request config 封装,详情请看:AxiosRequestConfig

getUserJwtToken 方法

此为使用 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({
  api_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

IPDSRequestConfig

其他可选配置。

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

代表用户身份的 JWT。一般有效期2小时。

refresh_token

string

刷新 token,可用于刷新过期的 access_token

expire_time

string

access_token 的有效时间。一般为签发token 2小时后的时间。格式如: 2022-02-16T07:59:14Z

expires_in

string

access_token过期时间,单位秒。如:7200

token_type

string

access_token 类型,默认:Bearer

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 方法

此方法用于获取 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({
  api_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

IPDSRequestConfig

其他可选配置。

IGetServiceJwtTokenReq

字段

类型

必选

说明

client_id

string

JWT应用ID。

private_key_pem

string

私钥 pem 字符串。

domain_id

string

DomainID。

返回

字段

类型

必选

说明

result

ITokenInfo

代表Domain超级管理员身份的服务账号的token

refreshJwtToken 方法

此方法可以用来刷下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({
  api_endpoint: `https://${domain_id}.api.aliyunpds.com`
})

const params = {
  client_id,
  refresh_token: 'xxxxxxx',
}

const jwtToken = await client.refreshJwtToken(params)

参数说明

字段

类型

必选

说明

params

IRefreshJwtTokenReq

参数。

options

IPDSRequestConfig

其他可选配置。

IRefreshJwtTokenReq

字段

类型

必选

说明

client_id

string

JWT应用ID。

refresh_token

string

为过期的 jwtToken中的refresh_token。

返回

字段

类型

必选

说明

result

ITokenInfo

刷新后的 jwtToken。

getTokenByCode 方法

此方法可以根据 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({
  api_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

IPDSRequestConfig

其他可选配置。

IGetTokenByCodeReq

字段

类型

必选

说明

client_id

string

OAuth应用ID。

client_secret

string

OAuth应用Secret。

webserver类型的应用必选。

redirect_url

string

OAuth应用回调地址

code

string

OAuth应用流程中得到的一次性code

返回

字段

类型

必选

说明

result

ITokenInfo

代表用户身份的token

refreshToken 方法

此方法可以用来刷新 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({
  api_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

IPDSRequestConfig

其他可选配置。

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。