全部產品
Search
文件中心

Drive and Photo Service:Token

更新時間:Dec 23, 2025

以下所有方法中的 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

代表使用者身份的 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 方法

新增於: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。