Krótkie wprowadzenie do uwierzytelniania z protokołem OAuth

Interfejs Gemini API umożliwia pobieranie semantyczne z Twoich własnych danych. Jest Twoich danych, wymaga to bardziej rygorystycznej kontroli dostępu niż klucze interfejsu API.

W tym krótkim wprowadzeniu zastosowano uproszczone podejście do uwierzytelniania, które jest odpowiednie dla środowiska testowego. W środowisku produkcyjnym zapoznaj się z tymi zagadnieniami: informacje uwierzytelnianie i autoryzacja przed wybór danych logowania odpowiednie dla Twojej aplikacji.

Cele

  • Konfigurowanie protokołu OAuth w projekcie w chmurze
  • Skonfiguruj domyślne dane logowania aplikacji
  • Zarządzaj danymi logowania w swoim programie zamiast używać gcloud auth

Wymagania wstępne

Aby skorzystać z tego krótkiego wprowadzenia, musisz mieć:

Skonfiguruj projekt w chmurze

Aby skorzystać z tego krótkiego wprowadzenia, musisz najpierw skonfigurować projekt Cloud.

1. Włącz API

Zanim zaczniesz korzystać z interfejsów API Google, musisz je włączyć w projekcie Google Cloud.

2. Konfigurowanie ekranu zgody OAuth

Następnie skonfiguruj ekran zgody OAuth projektu i dodaj siebie jako test użytkownika. Jeśli w przypadku Twojego projektu Cloud ten krok masz już za sobą, przejdź do sekcji w następnej sekcji.

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API Usługi > OAuth ekranu zgody.

    Otwórz ekran zgody OAuth

  2. Wybierz dla aplikacji typ użytkownika Zewnętrzny, a potem kliknij Utwórz.

  3. Wypełnij formularz rejestracji aplikacji (większość pól możesz zostawić puste). kliknij Zapisz i kontynuuj.

  4. Na razie możesz pominąć dodawanie zakresów i kliknąć Zapisz i kontynuuj. W gdy utworzysz aplikację do użytku poza Google Workspace. Twojej organizacji, musisz dodać i zweryfikować zakresy autoryzacji, które wymaga aplikacji.

  5. Dodaj użytkowników testowych:

    1. W sekcji Użytkownicy testowi kliknij Dodaj użytkowników.
    2. Wpisz swój adres e-mail i innych autoryzowanych użytkowników testowych, a następnie kliknij Zapisz i kontynuuj.
  6. Przejrzyj podsumowanie rejestracji aplikacji. Aby wprowadzić zmiany, kliknij Edytuj. Jeśli Jeśli rejestracja aplikacji wygląda dobrze, kliknij Wróć do panelu.

3. Autoryzacja danych logowania w aplikacji komputerowej

Aby uwierzytelnić się jako użytkownik i uzyskać dostęp do jego danych w aplikacji, musisz: utwórz co najmniej jeden identyfikator klienta OAuth 2.0. Identyfikator klienta służy do identyfikowania z jedną aplikacją na serwery OAuth Google. Jeśli Twoja aplikacja działa na wielu platformach, musisz utworzyć oddzielny identyfikator klienta dla każdej platformy.

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API Usługi > Dane logowania.

    Otwórz Dane logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.

  3. Kliknij Typ aplikacji > Aplikacja komputerowa.

  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest tylko widoczne w konsoli Google Cloud.

  5. Kliknij Utwórz. Pojawi się ekran z utworzonym klientem OAuth i nowym Identyfikator klienta i tajny klucz klienta.

  6. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Klient OAuth 2.0 Identyfikatory.

  7. Kliknij przycisk pobierania, aby zapisać plik JSON. Zostanie zapisany jako client_secret_<identifier>.json i zmień nazwę na client_secret.json i przenieś go do katalogu roboczego.

Skonfiguruj domyślne dane uwierzytelniające aplikacji

Aby przekonwertować plik client_secret.json na użyteczne dane logowania, przekaż jego lokalizację polecenia gcloud auth application-default login --client-id-file argument.

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'

Uproszczona konfiguracja projektu w tym samouczku powoduje wyświetlenie komunikatu „Google nie „weryfikuję tę aplikację”. To normalne, kliknij „Dalej”.

Spowoduje to umieszczenie wygenerowanego tokena w dobrze znanej lokalizacji, aby można było uzyskać do niego dostęp w gcloud lub bibliotekach klienta.

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'

Po ustawieniu domyślnych danych uwierzytelniających aplikacji (ACD) klient w większości języków nie potrzebują pomocy w ich znalezieniu.

Curl

Najszybszym sposobem na sprawdzenie, czy to działa, jest użycie go do uzyskania dostępu do REST Interfejs API używający 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

W języku Python biblioteki klienta powinny znaleźć je automatycznie:

pip install google-generativeai

Minimalistyczny skrypt do przetestowania:

import google.generativeai as genai

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

Dalsze kroki

Jeśli wszystko działa, możesz spróbować Wyszukiwanie semantyczne z danych tekstowych.

Samodzielne zarządzanie danymi logowania [Python]

W wielu przypadkach nie możesz utworzyć dostępu za pomocą polecenia gcloud. z identyfikatora klienta (client_secret.json). Google udostępnia biblioteki w wielu języków, co pozwala zarządzać tym procesem w aplikacji. Ta sekcja w języku Python. Istnieją też równoważne przykłady procedury dla innych języków, dostępnej na Dokumentacja interfejsu Drive API

1. Zainstaluj niezbędne biblioteki

Zainstaluj bibliotekę klienta Google dla języka Python i bibliotekę klienta Gemini.

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

2. Zapisywanie menedżera danych logowania

Aby zminimalizować liczbę kliknięć autoryzacji utwórz w katalogu roboczym plik o nazwie load_creds.py, zapisuje w pamięci podręcznej plik token.json, którego można użyć później lub odświeża, jeśli wygaśnie.

Zacznij od ten kod, aby przekonwertować plik client_secret.json na token, którego można użyć 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. Napisz program

Teraz utwórz 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. Uruchamianie programu

W katalogu roboczym uruchom przykładowy kod:

python script.py

Przy pierwszym uruchomieniu skrypt otwiera okno przeglądarki i wyświetla monit w celu autoryzowania dostępu.

  1. Jeśli nie zalogujesz się wcześniej na konto Google, pojawi się prośba o zaloguj się. Jeśli jesteś zalogowany na kilka kont, wybierz koncie ustawionym jako „Konto testowe”. podczas konfigurowania projektu.

  2. Informacje o autoryzacji są przechowywane w systemie plików, więc następnym razem nie zostanie wyświetlony przykładowy kod, nie zostanie wyświetlony monit o autoryzację.

Uwierzytelnianie zostało skonfigurowane.