OAuth による認証のクイックスタート

Gemini API を使用すると、独自のデータに対してセマンティック検索を行うことができます。なぜなら、 データを保護するうえで、API キーよりも厳密なアクセス制御が必要になります。

このクイックスタートでは、適切な簡素化された認証アプローチを使用します。 おすすめします。本番環境の場合 概要 認証と認可 次の日付より前 アクセス認証情報の選択 選択することもできます

目標

  • OAuth 用にクラウド プロジェクトを設定する
  • application-default-credentials を設定する
  • gcloud auth を使用する代わりに、プログラムでクルデンシャルを管理します

前提条件

このクイックスタートを実行するには、次のものが必要です。

Cloud プロジェクトを設定する

このクイックスタートを完了するには、まず Cloud プロジェクトを設定する必要があります。

1. API を有効にする

Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。

  • Google Cloud コンソールで、Google Generative Language API を有効にします。

    API の有効化

2. OAuth 同意画面を構成する

次に、プロジェクトの OAuth 同意画面を構成し、自分自身をテストとして追加します できます。Cloud プロジェクトでこの手順をすでに完了している場合は、次の手順に進んでください。 次のセクションで説明します

  1. Google Cloud コンソールで、メニュー >API とサービス >OAuth 同意画面をご覧ください。

    <ph type="x-smartling-placeholder"></ph> OAuth 同意画面に移動

  2. アプリのユーザータイプとして [外部] を選択し、[作成] をクリックします。

  3. アプリ登録フォームに入力(ほとんどのフィールドは空白のままで構いません) [保存して次へ] をクリックします。

  4. 現時点では、スコープの追加をスキップして [保存して次へ] をクリックします。 Google Workspace の外部で使用するアプリを作成すると、 認証スコープを組織レベルで追加して、そのスコープに 必要があります。

  5. テストユーザーを追加します。

    1. [テストユーザー] で [ユーザーを追加] をクリックします。
    2. メールアドレスと、その他の承認されたテストユーザーを入力します。 [保存して次へ] をクリックします。
  6. アプリ登録の概要を確認します。変更するには、[編集] をクリックします。条件 アプリの登録に問題がないことを確認したら、[Back to Dashboard] をクリックします。

3. デスクトップ アプリケーションの認証情報を承認する

エンドユーザーとして認証を行い、アプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は Google の OAuth サーバーに送信します。アプリが複数のプラットフォームで動作する場合 プラットフォームごとに個別のクライアント ID を作成する必要があります。

  1. Google Cloud コンソールで、メニュー >API とサービス > 認証情報

    <ph type="x-smartling-placeholder"></ph> [認証情報] に移動

  2. [認証情報を作成] をクリックします。OAuth クライアント ID

  3. [アプリケーションの種類] >デスクトップ アプリ

  4. [名前] フィールドに、認証情報の名前を入力します。この名前は 表示されます。

  5. [作成] をクリックします。[OAuth クライアントの作成] 画面が表示され、新しい クライアント ID とクライアント シークレット。

  6. [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント] に表示されます。 あります。

  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 は、 アプリ内でそのプロセスを管理できるようにしました。このセクション このプロセスを Python で示します。この並べ替えには同等の例があります。 他の言語については、 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. 認証情報はファイル システムに保存されるため、次回から サンプルコードを実行しても、承認を求められることはありません。

認証が正常に設定されました。