Краткое руководство по аутентификации с помощью OAuth, Краткое руководство по аутентификации с помощью OAuth

Самый простой способ аутентификации в Gemini API — настроить ключ API, как описано в кратком руководстве по Gemini API . Если вам нужен более строгий контроль доступа, вместо этого вы можете использовать OAuth. Это руководство поможет вам настроить аутентификацию с помощью OAuth.

В этом руководстве используется упрощенный подход к аутентификации, подходящий для среды тестирования. В производственной среде узнайте об аутентификации и авторизации, прежде чем выбирать учетные данные доступа , подходящие для вашего приложения.

Цели

  • Настройте свой облачный проект для OAuth
  • Настройка учетных данных приложения по умолчанию
  • Управляйте учетными данными в своей программе вместо использования gcloud auth

Предварительные условия

Чтобы запустить это краткое руководство, вам необходимо:

Настройте свой облачный проект

Чтобы выполнить это краткое руководство, сначала необходимо настроить облачный проект.

1. Включите API

Прежде чем использовать API Google, вам необходимо включить их в проекте Google Cloud.

  • В консоли Google Cloud включите Google Generative Language API.

    Включить API

2. Настройте экран согласия OAuth.

Затем настройте экран согласия OAuth проекта и добавьте себя в качестве тестового пользователя. Если вы уже выполнили этот шаг для своего облачного проекта, перейдите к следующему разделу.

  1. В консоли Google Cloud выберите Меню > API и службы > Экран согласия OAuth .

    Перейдите на экран согласия OAuth.

  2. Выберите тип пользователя «Внешний» для вашего приложения, затем нажмите «Создать» .

  3. Заполните форму регистрации приложения (большинство полей можно оставить пустыми), затем нажмите «Сохранить и продолжить» .

  4. На данный момент вы можете пропустить добавление областей и нажать «Сохранить и продолжить» . В будущем, когда вы создадите приложение для использования за пределами вашей организации Google Workspace, вам необходимо будет добавить и проверить области авторизации, необходимые вашему приложению.

  5. Добавьте тестовых пользователей:

    1. В разделе «Тестовые пользователи » нажмите «Добавить пользователей» .
    2. Введите свой адрес электронной почты и адрес других авторизованных тестовых пользователей, затем нажмите «Сохранить и продолжить» .
  6. Просмотрите сводку регистрации приложения. Чтобы внести изменения, нажмите «Изменить» . Если регистрация приложения выглядит нормально, нажмите «Вернуться на панель управления» .

3. Авторизация учетных данных для настольного приложения.

Чтобы пройти аутентификацию в качестве конечного пользователя и получить доступ к пользовательским данным в вашем приложении, вам необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах Google OAuth. Если ваше приложение работает на нескольких платформах, вам необходимо создать отдельный идентификатор клиента для каждой платформы.

  1. В консоли Google Cloud выберите Меню > API и службы > Учетные данные .

    Перейти к учетным данным

  2. Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .

  3. Нажмите Тип приложения > Приложение для ПК .

  4. В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.

  5. Нажмите Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.

  6. Нажмите ОК . Вновь созданные учетные данные появятся в разделе «Идентификаторы клиентов OAuth 2.0».

  7. Нажмите кнопку загрузки, чтобы сохранить файл JSON. Он будет сохранен как client_secret_<identifier>.json , переименуйте его в client_secret.json и переместите в свой рабочий каталог.

Настройка учетных данных приложения по умолчанию

Чтобы преобразовать файл client_secret.json в пригодные для использования учетные данные, передайте его местоположение в аргументе --client-id-file команды gcloud auth application-default login .

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'
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) клиентским библиотекам на большинстве языков требуется минимальная помощь для их поиска.

Завиток

Самый быстрый способ проверить, работает ли это, — использовать его для доступа к REST API с помощью Curl:

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 клиентские библиотеки должны найти их автоматически:

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. Установите необходимые библиотеки

Установите клиентскую библиотеку Google для Python и клиентскую библиотеку 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. Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода вам не будет предложено авторизоваться.

Вы успешно настроили аутентификацию.