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

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

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

Цели

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

Предпосылки

Для запуска этого быстрого старта вам понадобится:

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

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

1. Включить API

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

  • В консоли Google Cloud включите API генеративного языка Google.

    Включить API

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

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

  1. В консоли Google Cloud перейдите в Меню > > Обзор .

    Перейти к

  2. Заполните форму конфигурации проекта и в разделе Аудитория установите тип пользователя « Внешний» .

  3. Заполните оставшуюся часть формы, примите условия Политики использования данных пользователей, а затем нажмите кнопку Создать .

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

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

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

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

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

  1. В консоли Google Cloud перейдите в Меню > > Клиенты .

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

  2. Нажмите «Создать клиента» .

  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'

После настройки учетных данных приложения по умолчанию (ADC) клиентским библиотекам на большинстве языков потребуется минимальная помощь или ее вообще не потребуется, чтобы их найти.

Завиток

Самый быстрый способ проверить работоспособность этого подхода — использовать его для доступа к 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. Аналогичные примеры подобной процедуры для других языков доступны в документации по API Drive.

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

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