全部產品
Search
文件中心

Drive and Photo Service:Token

更新時間:Dec 22, 2025

本文主要介紹 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。