Guía de inicio rápido de Authentication con OAuth

La API de Gemini te permite realizar una recuperación semántica en tus propios datos. Dado que se trata de tus datos, necesita controles de acceso más estrictos que las claves de API.

En esta guía de inicio rápido, se usa un enfoque de autenticación simplificado que es adecuado para un entorno de pruebas. En el caso de un entorno de producción, obtén información sobre la autenticación y autorización antes de elegir las credenciales de acceso adecuadas para la app.

Objetivos

  • Configura tu proyecto de Cloud para OAuth
  • Configura las credenciales predeterminadas de la aplicación
  • Administra las credenciales en tu programa en lugar de usar gcloud auth

Requisitos previos

Para ejecutar esta guía de inicio rápido, necesitas lo siguiente:

Configura tu proyecto de la nube

Para completar esta guía de inicio rápido, primero debes configurar tu proyecto de Cloud.

1. Habilita la API

Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud.

  • En la consola de Google Cloud, habilita la API de Generative Language de Google.

    Habilitar la API

2. Cómo configurar la pantalla de consentimiento de OAuth

A continuación, configura la pantalla de consentimiento de OAuth del proyecto y agrégate como usuario de prueba. Si ya completaste este paso para tu proyecto de Cloud, pasa a la siguiente sección.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. Selecciona el tipo de usuario Externo para tu aplicación y, luego, haz clic en Crear.

  3. Completa el formulario de registro de la app (puedes dejar la mayoría de los campos en blanco) y haz clic en Save and Continue.

  4. Por ahora, puedes omitir la adición de permisos y hacer clic en Guardar y continuar. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, deberás agregar y verificar los permisos de autorización que requiera tu app.

  5. Agrega usuarios de prueba:

    1. En Usuarios de prueba, haz clic en Agregar usuarios.
    2. Ingresa tu dirección de correo electrónico y cualquier otro usuario de prueba autorizado y, luego, haz clic en Guardar y continuar.
  6. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si el registro de la app es correcto, haz clic en Back to Dashboard.

3. Autoriza las credenciales de una aplicación para computadoras

Para autenticarte como usuario final y acceder a los datos del usuario en tu app, debes crear uno o más IDs de cliente de OAuth 2.0. Un ID de cliente se usa con el fin de identificar una sola app para los servidores de OAuth de Google. Si la app se ejecuta en varias plataformas, debes crear un ID de cliente diferente para cada una.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.

  3. Haz clic en Tipo de aplicación > App de escritorio.

  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.

  5. Haz clic en Crear. Aparecerá la pantalla de OAuth creado por el cliente y se mostrará tu nuevo ID de cliente y el Secreto de cliente.

  6. Haz clic en OK. La credencial creada recientemente aparecerá en IDs de cliente de OAuth 2.0.

  7. Haz clic en el botón de descarga para guardar el archivo JSON. Se guardará como client_secret_<identifier>.json, le cambiarás el nombre a client_secret.json y lo moverás a tu directorio de trabajo.

Configura las credenciales predeterminadas de la aplicación

Para convertir el archivo client_secret.json en credenciales utilizables, pasa su ubicación al argumento --client-id-file del comando 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'

La configuración del proyecto simplificada en este instructivo activa un diálogo "Google has notverified this app". Es normal; selecciona "Continuar".

Esto coloca el token resultante en una ubicación conocida para que gcloud o las bibliotecas cliente puedan acceder a él.

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'

Una vez que hayas configurado las credenciales predeterminadas de la aplicación (ACD), las bibliotecas cliente en la mayoría de los lenguajes no necesitan ayuda para encontrarlas, o bien mínima.

Curl

La forma más rápida de comprobar que esto funciona es usarla para acceder a la API de REST mediante 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

En Python, las bibliotecas cliente deberían encontrarlas automáticamente:

pip install google-generativeai

Una secuencia de comandos mínima para probarla podría ser la siguiente:

import google.generativeai as genai

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

Node.js

Para usar estas credenciales con la biblioteca cliente de Node.js, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

export GOOGLE_APPLICATION_CREDENTIALS='<PATH_TO>/application_default_credentials.json'

Instala la biblioteca cliente:

npm install @google-ai/generativelanguage

Crea una secuencia de comandos mínima:

const { ModelServiceClient } =
  require("@google-ai/generativelanguage").v1;

const MODEL_NAME = "models/embedding-001";

const client = new ModelServiceClient({});

client
  .listModels({})
  .then((result) => {
    result = result[0]
    for (let i = 0; i < result.length; i++) {
      console.log(result[i].name);
    }
  });

Próximos pasos

Si funciona, puedes probar la recuperación semántica de datos de texto.

Administra las credenciales por tu cuenta [Python]

En muchos casos, no tendrás el comando gcloud disponible para crear el token de acceso desde el ID de cliente (client_secret.json). Google proporciona bibliotecas en muchos lenguajes para que puedas administrar ese proceso dentro de tu app. En esta sección, se muestra el proceso en Python. Hay ejemplos equivalentes de este tipo de procedimiento, para otros lenguajes, disponibles en la documentación de la API de Drive.

1. Instala las bibliotecas necesarias

Instala la biblioteca cliente de Google para Python y la biblioteca cliente de Gemini.

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

pip install google-generativeai

2. Escribe el administrador de credenciales

Para minimizar la cantidad de veces que tienes que hacer clic en las pantallas de autorización, crea un archivo llamado load_creds.py en el directorio de trabajo para almacenar en caché un archivo token.json que podrás volver a usar más adelante o actualizarlo si vence.

Comienza con el siguiente código para convertir el archivo client_secret.json en un token que se pueda usar con 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. Escribe tu programa

Ahora, crea tu 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. Cómo ejecutar tu programa

En tu directorio de trabajo, ejecuta la muestra:

python script.py

La primera vez que ejecutes la secuencia de comandos, se abrirá una ventana del navegador y se te solicitará que autorices el acceso.

  1. Si aún no accediste a tu Cuenta de Google, se te solicitará que lo hagas. Si accediste a varias cuentas, asegúrate de seleccionar la que estableciste como "Cuenta de prueba" cuando configuras el proyecto.

  2. La información de autorización se almacena en el sistema de archivos, por lo que la próxima vez que ejecutes el código de muestra, no se te solicitará autorización.

Configuraste correctamente la autenticación.