Python 快速入門導覽課程

快速入門說明如何設定及執行呼叫 Google Workspace API 的應用程式。

Google Workspace 快速入門會使用 API 用戶端程式庫處理驗證和授權流程的部分細節。建議您為自家應用程式使用用戶端程式庫。本快速入門導覽課程會使用簡化的驗證方法,適合測試環境使用。如要使用正式環境,建議您先瞭解驗證和授權,再選擇適合應用程式的存取憑證

建立可向 People API 提出要求的 Python 指令列應用程式。

目標

  • 設定環境。
  • 安裝用戶端程式庫。
  • 設定範例。
  • 執行範例。

必要條件

如要執行本快速入門導覽課程,您需要具備下列先決條件:

  • 啟用 API 存取權的 Google Workspace 網域。
  • 該網域中具有管理員權限的 Google 帳戶。

設定環境

如要完成本快速入門課程,請設定環境。

啟用 API

使用 Google API 前,您必須先在 Google Cloud 專案中啟用這些 API。您可以在單一 Google Cloud 專案中啟用一或多個 API。
  • 在 Google Cloud 控制台中啟用 People API。

    啟用 API

如果您使用新的 Google Cloud 專案完成本快速入門課程,請設定 OAuth 同意畫面,並將自己新增為測試使用者。如果您已為 Cloud 專案完成這個步驟,請跳至下一節。

  1. 在 Google Cloud 控制台中,依序前往「選單」 >「API 和服務」 >「OAuth 同意畫面」

    前往 OAuth 同意畫面

  2. 在「使用者類型」部分,選取「內部」,然後按一下「建立」
  3. 填寫應用程式註冊表單,然後按一下「儲存並繼續」
  4. 目前您可以略過新增範圍,直接按一下「儲存並繼續」。日後,如果您建立的應用程式是用於 Google Workspace 機構以外的環境,就必須將使用者類型變更為外部,然後新增應用程式所需的授權範圍。

  5. 查看應用程式註冊摘要。如要修改資訊,請按一下「編輯」。如果應用程式註冊看起來沒問題,請按一下「返回資訊主頁」

授權電腦版應用程式的憑證

如要驗證使用者,並在應用程式中存取使用者資料,您需要建立一或多個 OAuth 2.0 用戶端 ID。用戶端 ID 可讓 Google 的 OAuth 伺服器識別單一應用程式。如果您的應用程式是在多個平台中運作,則必須為每個平台建立專屬的用戶端 ID。
  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「桌面應用程式」
  4. 在「Name」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  6. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 Client IDs」下方。
  7. 將下載的 JSON 檔案儲存為 credentials.json,然後將檔案移至工作目錄。

安裝 Google 用戶端程式庫

  • 安裝 Python 適用的 Google 用戶端程式庫:

    pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
    

設定範例

  1. 在工作目錄中建立名為 quickstart.py 的檔案。
  2. quickstart.py 中加入以下程式碼:

    people/quickstart/quickstart.py
    import os.path
    
    from google.auth.transport.requests import Request
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    
    # If modifying these scopes, delete the file token.json.
    SCOPES = ["https://www.googleapis.com/auth/contacts.readonly"]
    
    
    def main():
      """Shows basic usage of the People API.
      Prints the name of the first 10 connections.
      """
      creds = None
      # The file token.json stores the user's access and refresh tokens, and is
      # created automatically when the authorization flow completes for the first
      # time.
      if os.path.exists("token.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
      # If there are no (valid) credentials available, let the user log in.
      if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
          creds.refresh(Request())
        else:
          flow = InstalledAppFlow.from_client_secrets_file(
              "credentials.json", SCOPES
          )
          creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open("token.json", "w") as token:
          token.write(creds.to_json())
    
      try:
        service = build("people", "v1", credentials=creds)
    
        # Call the People API
        print("List 10 connection names")
        results = (
            service.people()
            .connections()
            .list(
                resourceName="people/me",
                pageSize=10,
                personFields="names,emailAddresses",
            )
            .execute()
        )
        connections = results.get("connections", [])
    
        for person in connections:
          names = person.get("names", [])
          if names:
            name = names[0].get("displayName")
            print(name)
      except HttpError as err:
        print(err)
    
    
    if __name__ == "__main__":
      main()

執行範例

  1. 在工作目錄中建構並執行範例:

    python3 quickstart.py
    
  1. 第一次執行範例時,系統會提示您授權存取權:
    1. 如果尚未登入 Google 帳戶,請在系統提示時登入。如果您登入了多個帳戶,請選取要用於授權的帳戶。
    2. 然後點選 [Accept]

    Python 應用程式會執行並呼叫 People API。

    授權資訊會儲存在檔案系統中,因此下次執行範例程式碼時,系統不會提示您授權。

後續步驟