全部產品
Search
文件中心

Drive and Photo Service:Web服務端應用的OAuth2.0接入流程

更新時間:Sep 11, 2025

本文檔主要描述Web服務應用如何通過OAuth2.0介面接入網盤與相簿服務。

OAuth2.0簡介

OAuth2.0允許使用者在不告知第三方自己的帳號密碼情況下,通過授權方式讓第三方服務可以擷取自己的資源資訊。

OAuth2.0支援Authorization Code、Implicit、Resource Owner Password Credentials、Client Credentials四種授權方式,其中Authorization Code模式的安全係數最高,本文以Authorization Code的授權模式為例介紹。

OAuth2.0中的Authorization Code模式的授權流程如下圖所示。

a2

Web 服務應用接入流程

image

調用流程:

  1. 使用者登入與授權

    使用者訪問Web服務應用,Web服務應用將使用者重新導向到證明伺服器,使用者決定是否授權Web服務應用。

  2. 擷取Access Token

    1. 使用者授權後,證明伺服器將使用者重新導向回Web服務應用指定的重新導向URI(redirection URI),並附上授權碼(code)。

    2. Web服務應用收到授權碼後,向證明伺服器請求令牌,擷取存取權杖(access_token)。

  3. 訪問資源

    使用者使用存取權杖(access_token)通過Web應用前端訪問業務API。

前提條件

  • 需要一個支援OAuth2.0協議能力的服務。

  • 已開通網盤與相簿服務(開發人員版)。如果您還未開通開發人員版服務,具體操作,請參見開始使用 PDS

操作步驟

步驟一:擷取應用的ID和Secret

  1. 進入網盤與相簿服務(開發人員版)域列表

  2. 找到您需要操作的域,在該域的右側列單擊詳情

  3. 建立應用。

    說明

    如果未建立應用,請建立應用後再進行後續操作。

    1. 進入域詳情頁面後,選擇應用列表,單擊建立應用

    2. 輸入和選擇頁面提示內容,單擊確認

      應用的類型請選擇為WebServer(Web服務端應用)。

      image

  4. 在應用列表中擷取目標應用ID(client_id)和 Secret(client_secret)。

    重要

    Secret要注意保密不要泄露。

步驟二:OAuth2.0登入授權

  1. 設定Authorization參數

    使用者通過瀏覽器訪問您的Web服務應用,如果使用者還沒有認證,您的Web服務應用需要構建一個 Authorization請求,這個請求會帶上您的Web服務應用的client_id和要訪問Scope等資訊,以便讓使用者向PDS Auth服務(Authorization Server)授權給您的Web服務應用。

    請求樣本:

    GET /v2/oauth/authorize?client_id=<ID>&redirect_uri=<redirect_uri>&login_type=<login_type>&scope=<scope>&response_type=code&state=[state] HTTP/1.1
    Host: {domainId}.api.aliyunpds.com

    請求參數說明參見下表:

    參數

    是否必選

    描述

    client_id

    應用ID。擷取方式,請參見擷取應用的ID和Secret

    redirect_uri

    回調URL,指定認證服務授權後重新導向的地址,例如 https://example.com/callback

    授權成功後,使用者將被重新導向至此地址並攜帶一次性驗證碼,例如 https://example.com/callback?code=xxxx

    說明

    請確保回調URL與建立應用時提供的OAuth2.0回調URL相匹配。

    scope

    存取範圍列表,描述您的Web服務應用需要的存取權限範圍,是在建立應用時填寫的許可權範圍的子集,將在使用者同意授權頁面展示。請參見Scope說明

    說明

    最終擷取到的AccessToken的許可權,將是整個scope和使用者本身的許可權的交集。

    response_type

    此處固定值code

    state

    否,但推薦使用

    若請求攜帶此參數,證明伺服器將原樣回傳以防止CSRF攻擊,例如:https://example.com/callback?code=xxxx&state=abc

    login_type

    登入方式選項。取值範圍如下:

    • default:供綜合登入頁面,包括手機號登入和其他方式。

    • phone:僅限手機號登入。

    • ding:適用於DingTalk掃碼登入。

    • ldap:適用於LDAP或AD域登入。

    • wx:適用於企業微信登入。

    • ram:適用於阿里雲子帳號登入。

    • lark:適用于飛書登入。

    • saml:適用於第三方帳號通過SAML協議登入。

    hide_consent

    首次登入後是否跳過使用者授權頁面。取值可選範圍如下:

    • true(預設):使用者將不會看到授權頁面,直接進入下一步。

    • false:可以看到授權頁面。

    lang

    介面展示的語言。取值範圍如下:

    • zh_CN(預設):簡體中文。

    • en_US:英文。

  2. Consent 頁面

    在此步驟中,使用者可以決定是否授權給 Web 服務應用。如果不同意授權,則流程終止。 如果同意授權,將重新導向到第一步請求中的redirect_uri, 比如:https://example.com/callback?code=xxxx&state=abc

  3. 通過code擷取AccessToken

    Web服務應用分為前端和後端兩部分。前端需配置重新導向URLhttps://example.com/callback。前端在接收參數?code=xxx後,應解析出code並將其傳遞給後端。後端通過以下介面擷取AccessToken,並回傳給前端。

    請求樣本:

    POST /v2/oauth/token HTTP/1.1
    Host: {domainId}.api.aliyunpds.com
    Content-Type: application/x-www-form-urlencoded
    
    code=xxx\
    &client_id=your_app_id\
    &client_secret=your_app_secret\
    &redirect_uri=https://example.com/callback\
    &grant_type=authorization_code

    參數

    是否必選

    描述

    code

    一次性code,使用過一次後即失效。

    client_id

    應用ID。擷取方式,請參見擷取應用的ID和Secret

    client_secret

    建立應用時產生的secret

    redirect_uri

    回調URL,指定認證服務授權後重新導向的地址,例如 https://example.com/callback

    說明

    請確保回調URL與建立應用時提供的OAuth2.0回調URL相匹配。

    grant_type

    授與類型。固定值為authorization_code,表示使用授權碼授權方式。

    返回:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
      "access_token":"Aiasd76*****",
      "expires_time":"2019-11-11T10:10:10.009Z",
      "expire_in": 7200,
      "token_type":"Bearer",
      "refresh_token":"LSLKdk*******"
    }

    參數

    位置

    類型

    是否必選

    描述

    access_token

    body

    string

    產生的 access_token,有效期間2小時。

    refresh_token

    body

    string

    用來重新整理 access_token,有效期間比較長,一般為7天。

    expires_time

    body

    string

    access_token的失效時間。

    expire_in

    body

    long

    access_token的有效期間,預設:7200,單位:秒。

    token_type

    body

    string

    token類型。固定值為 Bearer

  4. 調用PDS服務API

    Web前端可以直接使用access_token調用PDS API。只需在要求標頭的Authorization中帶上access_token

    調用方式,請參見調用方式

重新整理AccessToken

請求樣本:

POST /v2/oauth/token HTTP/1.1
Host: {domainId}.api.aliyunpds.com
Content-Type: application/x-www-form-urlencoded

refresh_token=xxx\
&client_id=xxx\
&client_secret=xxx\
&grant_type=refresh_token

請求參數說明參見下表:

參數名稱

是否必選

描述

refresh_token

用授權碼換取存取權杖時獲得的重新整理權杖。

client_id

應用ID

grant_type

固定值為refresh_token

client_secret

應用的密鑰,用作擷取存取權杖時評鑑應用身份的密碼。

返回:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token":"xxxxxxxxx",
  "refresh_token": "xxxxx",
  "expires_in":7200,
  "expire_time":"2019-11-11T10:10:10.009Z",
  "token_type":"Bearer"
}

名稱

位置

類型

必選

說明

access_token

body

string

產生的 access_token,有效期間2小時。

refresh_token

body

string

用來重新整理 access_token,有效期間比較長,一般為7天。

expires_time

body

string

access_token的失效時間。

expire_in

body

long

access_token的有效期間,預設:7200,單位:秒。

token_type

body

string

token類型。固定值為 Bearer

常見問題

授權碼的有效期間是多久?

授權碼有效期間為10分鐘,使用過一次後失效。

存取權杖的有效期間是多久?

存取權杖有效期間為2小時。

如何處理令牌到期?

可以使用重新整理權杖擷取新的存取權杖。

相關文檔