透過 OAuth 進行驗證的快速入門導覽課程

Gemini API 可讓您對自己的資料執行語意擷取。既然是 您的資料,這需要比 API 金鑰更嚴格的存取權控管。

本快速入門導覽課程採用合適的簡化驗證方法 測試環境如需正式環境,請學習 關於 驗證與授權選擇存取認證 挑選適合您應用程式的語言版本

目標

  • 設定 OAuth 的雲端專案
  • 設定應用程式預設憑證
  • 管理程式中的憑證,而非使用 gcloud auth

必要條件

如要執行本快速入門導覽課程,您需要:

設定雲端專案

如要完成本快速入門導覽課程,請先設定 Cloud 專案。

1. 啟用 API

您必須先在 Google Cloud 專案中啟用這些 Google API,才能使用這些 API。

  • 在 Google Cloud 控制台中,啟用 Google Generative Language API。

    啟用 API

2. 設定 OAuth 同意畫面

接下來,請設定專案的 OAuth 同意畫面,並將自己新增為測試用 內容。如果您已經為 Cloud 專案完成這個步驟,請跳到 。

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

    前往 OAuth 同意畫面

  2. 為應用程式選取「外部」使用者類型,然後點選「建立」

  3. 填寫應用程式註冊表單 (大多數的欄位可留空)。 然後按一下「儲存並繼續」

  4. 您現在可以略過新增範圍的步驟,然後按一下「儲存並繼續」。在 讓您建立在 Google Workspace 以外的地方使用的應用程式 機構必須新增並驗證 這樣的環境

  5. 新增測試使用者:

    1. 在「測試使用者」下方,按一下「新增使用者」
    2. 輸入您的電子郵件地址和其他任何授權的測試使用者,然後 請按一下「儲存並繼續」
  6. 查看應用程式註冊摘要。如要修改資訊,請按一下「編輯」。如果 應用程式註冊看起來沒有問題,請按一下 [返回資訊主頁]

3. 授權電腦版應用程式憑證

如要以使用者身分進行驗證,並存取應用程式中的使用者資料,您需要 建立一或多個 OAuth 2.0 用戶端 ID。用戶端 ID 可用來識別 單一應用程式傳送至 Google 的 OAuth 伺服器。如果您的應用程式在多個平台上運作 您都必須為每個平台分別建立用戶端 ID。

  1. 在 Google Cloud 控制台中,前往「選單」>API 與服務 > 憑證

    前往「憑證」頁面

  2. 按一下「建立憑證」>OAuth 用戶端 ID

  3. 按一下「應用程式類型」>電腦版應用程式

  4. 在「名稱」欄位中輸入憑證的名稱。這個名稱僅供 這項工具會顯示在 Google Cloud 控制台中

  5. 點選「建立」。畫面上會顯示 OAuth 用戶端建立的畫面,其中顯示新的 用戶端 ID 和用戶端密碼。

  6. 按一下「OK」(確定)。新建立的憑證會顯示在 OAuth 2.0 用戶端之下 而非客戶 ID

  7. 點選下載按鈕即可儲存 JSON 檔案。系統會將檔案儲存為 client_secret_<identifier>.json,並將其重新命名為 client_secret.json 並移至工作目錄

設定應用程式預設憑證

如要將 client_secret.json 檔案轉換為可用的憑證,請傳遞該檔案 位置 gcloud auth application-default login 指令的位置 --client-id-file 引數。

gcloud auth application-default login \
    --client-id-file=client_secret.json \
    --scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.retriever'

本教學課程中的簡化專案設定觸發了「Google 並未 。」對話方塊。這是正常現象,請選擇「繼續」

這會將產生的權杖放在已知位置,供使用者存取 由 gcloud 或用戶端程式庫提供

gcloud auth application-default login 
--no-browser --client-id-file=client_secret.json
--scopes='https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/generative-language.retriever'

設定應用程式預設憑證 (ACD) 之後,用戶端 大多數語言的程式庫只需要幾乎沒有幫助就能找到。

Curl

如要測試是否正常運作,最快的方法就是使用此程式碼存取 REST 使用 curl 的 API:

access_token=$(gcloud auth application-default print-access-token)
project_id=<MY PROJECT ID>
curl -X GET https://generativelanguage.googleapis.com/v1/models \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer ${access_token}" \
    -H "x-goog-user-project: ${project_id}" | grep '"name"'

Python

在 Python 中,用戶端程式庫應會自動找到:

pip install google-generativeai

以下提供幾個測試用的最小指令碼:

import google.generativeai as genai

print('Available base models:', [m.name for m in genai.list_models()])

後續步驟

如果這個方法有效 以語意擷取文字資料

自行管理憑證 [Python]

在多數情況下,您將無法使用 gcloud 指令建立存取權 符記 (client_secret.json)。Google 在 並支援多種語言,方便您在應用程式中管理這項程序。這個區段 示範處理程序還有類似的範例 其他語言的流程,也可在 Drive API 說明文件

1. 安裝所需的程式庫

安裝 Python 適用的 Google 用戶端程式庫和 Gemini 用戶端程式庫。

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

2. 寫入憑證管理工具

有效減少您需要點閱授權的次數 在工作目錄中建立名為 load_creds.py 的檔案,以便 快取 token.json 檔案以便日後重複使用,如果檔案到期,則重新整理檔案。

我們先從 以下程式碼,將 client_secret.json 檔案轉換為可使用 genai.configure:

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/generative-language.retriever']

def load_creds():
    """Converts `client_secret.json` to a credential object.

    This function caches the generated tokens to minimize the use of the
    consent screen.
    """
    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(
                'client_secret.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())
    return creds

3. 編寫方案

立即建立 script.py

import pprint
import google.generativeai as genai
from load_creds import load_creds

creds = load_creds()

genai.configure(credentials=creds)

print()
print('Available base models:', [m.name for m in genai.list_models()])

4. 執行程式

在工作目錄中執行範例:

python script.py

首次執行指令碼時,系統會開啟瀏覽器視窗並提示您 授予存取權。

  1. 如果尚未登入 Google 帳戶,系統會提示您登入 登入帳戶。如果您登入多個帳戶,請務必選取 帳戶設為「測試帳戶」即可。

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

您已順利完成驗證設定。