透過 API 同步處理自訂說明文件

您的入口網站提供一個特別的 API,可用於同步處理自訂內容。如要呼叫這個 API,您必須:

  1. 手動同步處理自訂內容至少一次。
  2. 使用適當的授權和金鑰建立服務帳戶。
  3. 發出 HTTP 要求以同步處理您的內容。

本文件說明如何建立服務帳戶,並提供透過 Python 或指令列發出要求的範例。

建立已授權的服務帳戶

如要使用 API 來同步處理您的自訂內容,您需要具有適當授權與金鑰的服務帳戶。如要建立服務帳戶、授予服務帳戶適當角色,並取得所需的金鑰檔案,請按照下列說明進行操作:

主控台

  1. 在 GCP 主控台中,開啟「Service Accounts」(服務帳戶) 頁面。

    前往「Service Accounts」(服務帳戶) 頁面

  2. 按一下 [Select a project] (選取專案)。

  3. 選取您的專案並按一下 [Open] (開啟)。

  4. 按一下 add [Create Service Account] (建立服務帳戶)

  5. 在「Service account name」(服務帳戶名稱) 欄位,為您的服務帳戶輸入顯示名稱。

  6. 選取 [Furnish a new private key] (提供一組新的私密金鑰) 核取方塊。

  7. 針對「Key type」(金鑰類型),請使用預設類型「JSON」。

  8. 按一下 [Save] (儲存)。

  9. 畫面上會顯示包含金鑰資訊的對話方塊,請關閉對話方塊以繼續操作。

  10. 在 GCP 主控台中,前往您專案的「Endpoints」>「Services」(服務) 頁面。

    Endpoints 服務

  11. 找出您要同步處理自訂內容的 API,然後按一下該 API 的名稱來變更其存取權限。

  12. 如果「Permissions」(權限) 側邊面板未開啟,請按一下 [+Permissions] (+權限)。

  13. 如要為建立的服務帳戶授予 API 存取權,請在「Add members」(新增成員) 欄位中輸入建立的服務帳戶電子郵件地址。

  14. 在「Select a role」(請選擇角色) 下拉式選單中,按一下 [Service Management] (服務管理),然後為該服務帳戶選取 [Service Config Editor] (服務設定編輯者) 角色。

恭喜!您建立了服務帳戶、將帳戶的私密金鑰下載到 JSON 檔案,並為服務帳戶指派了適當的角色。

gcloud

  1. 輸入下列指令以顯示 Google Cloud Platform (GCP) 專案的專案 ID:

    gcloud projects list
    
  2. 替換下列指令中的 [YOUR_PROJECT_ID],將預設專案設為您 API 所在的專案:

    gcloud config set project [YOUR_PROJECT_ID]
    
  3. 確認 Cloud SDK (gcloud) 已取得授權,可存取您在 GCP 上的資料與服務:

    gcloud auth login
    

    如果您有多個帳戶,請務必選擇 API 所屬 GCP 專案中的帳戶。如果您執行 gcloud auth list,則您選取的帳戶會顯示為專案的有效帳戶。

  4. 如要建立服務帳戶,請執行下列指令,並將 [SERVICE_ACCOUNT_NAME][Service Account to Sync Custom Content] 替換為您要使用的名稱及顯示名稱:

    gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] \
      --display-name "[Service Account to Sync Custom Content]"
    

    這個指令會為服務帳戶指派採下列格式的電子郵件地址:

    [SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
    

    後續指令會用到這個電子郵件地址。

  5. 建立服務帳戶金鑰檔案,將 [KEY_FILE] 替換為您金鑰的檔案名稱:

    gcloud iam service-accounts keys create ~/[KEY_FILE] \
      --iam-account [SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com
    
  6. 如要允許服務帳戶存取包含自訂內容的 API,請執行下列指令,並將其中的 [YOUR_SERVICE_NAME] 替換為包含自訂內容的 API 名稱:

    gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
          --member=serviceAccount:[SERVICE_ACCOUNT_NAME]@[YOUR_PROJECT_ID].iam.gserviceaccount.com \
          --role roles/servicemanagement.configEditor
    

傳送要求以同步處理自訂內容

下列範例說明如何發出同步處理自訂內容的要求。要求類似於下列內容:

 POST https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content/

請將 [YOUR_PROJECT_ID][YOUR_SERVICE_NAME] 替換為適當的值。要求成功完成後,回應的 HTTP 狀態碼為 200

接下來的範例將示範如何從 Google 的授權伺服器取得存取憑證,並透過 Python 或指令列,使用該憑證向您的入口網站端點發送要求:

Python

  1. 安裝所需的 Python 程式庫:
        pip install --upgrade google-auth
  2. 如要從服務帳戶憑證和端點所需範圍建立 Credentials 物件,並發出要求以同步處理內容,請將下列指令碼的 [YOUR_PROJECT_ID]/path/to/service.json[YOUR_SERVICE_NAME] 替換為適當的值:
    from google.oauth2 import service_account
    from google.auth.transport.requests import AuthorizedSession
    
    SCOPES = ["https://www.googleapis.com/auth/service.management.readonly"]
    SERVICE_ACCOUNT_FILE = "/path/to/service.json"
    PROJECT_ID = "[YOUR_PROJECT_ID]"
    SERVICE_NAME = "[YOUR_SERVICE_NAME]"
    
    credentials = service_account.Credentials.from_service_account_file(
       SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    authed_session = AuthorizedSession(credentials)
    endpoint =
    "https://endpointsportal.%s.cloud.goog/api/v1/%s/custom-content" % (PROJECT_ID, SERVICE_NAME)
    result = authed_session.post(endpoint)
    print result

指令列

  1. 開啟 Cloud Shell;如果您在 Linux 電腦上安裝了 Cloud SDK,請開啟終端機視窗。
  2. 如要驗證您的服務帳戶,請將下方指令中的 [KEY_FILE] 替換為服務帳戶金鑰檔案的路徑後,然後執行指令:
    gcloud auth activate-service-account --key-file [KEY_FILE]
  3. 使用您的服務帳戶以取得授權憑證:
    ACCESS_TOKEN=$(gcloud auth print-access-token)
  4. 呼叫 API 時,將憑證值做為不記名憑證傳送到授權標頭中。請將 [YOUR_PROJECT_ID][YOUR_SERVICE_NAME] 替換為適當的值:
    curl -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    https://endpointsportal.[YOUR_PROJECT_ID].cloud.goog/api/v1/[YOUR_SERVICE_NAME]/custom-content
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
App Engine 適用的 Cloud Endpoints Frameworks
需要協助嗎?請前往我們的支援網頁