אימות באמצעות מדריך למתחילים של OAuth

Gemini API מאפשר לך לאחזר סמנטי את הנתונים שלך. מכיוון שמדובר בנתונים שלכם, נדרשת בקרת גישה מחמירה יותר מאשר מפתחות API.

המדריך למתחילים משתמש בגישת אימות פשוטה שמתאימה לסביבת הבדיקה. בסביבת ייצור, כדאי לקרוא על אימות והרשאה לפני בחירת פרטי הכניסה שמתאימים לאפליקציה.

מטרות

  • הגדרה של פרויקט בענן ל-OAuth
  • הגדרת פרטי כניסה שמוגדרים כברירת מחדל באפליקציה
  • ניהול פרטי הכניסה בתוכנית במקום להשתמש ב-gcloud auth

דרישות מוקדמות

על מנת להפעיל את המדריך למתחילים:

הגדרת פרויקט בענן

על מנת להשלים את המדריך למתחילים, עליך להגדיר את הפרויקט שלך ב-Cloud.

‫1. הפעלת ה-API

כדי להשתמש ב-Google APIs, צריך להפעיל אותם בפרויקט ב-Google Cloud.

  • במסוף Google Cloud, מפעילים את Google Generative Language API.

    להפעלת ה-API

2. הגדרת מסך ההסכמה של OAuth

בשלב הבא צריך להגדיר את מסך ההסכמה ל-OAuth של הפרויקט ולהוסיף את עצמכם כמשתמשי בדיקה. אם כבר השלמתם את השלב הזה בפרויקט ב-Cloud, אפשר לדלג לקטע הבא.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > מסך הסכמה של OAuth.

    כניסה למסך ההסכמה של OAuth

  2. בוחרים בסוג המשתמש חיצוני לאפליקציה ולוחצים על יצירה.

  3. ממלאים את טופס ההרשמה לאפליקציה (אפשר להשאיר את רוב השדות ריקים) ולוחצים על Save and Continue (שמירה והמשך).

  4. בינתיים, אפשר לדלג על הוספת היקפים וללחוץ על שמירה והמשך. בעתיד, כשתיצרו אפליקציה לשימוש מחוץ לארגון שלכם ב-Google Workspace, תצטרכו להוסיף ולאמת את היקפי ההרשאות שנדרשים לאפליקציה.

  5. הוספת משתמשים לבדיקה:

    1. בקטע משתמשים לבדיקה, לוחצים על הוספת משתמשים.
    2. מזינים את כתובת האימייל שלכם ואת שאר המשתמשים המורשים לבדיקה, ואז לוחצים על Save and Continue (שמירה והמשך).
  6. לבדוק את הסיכום של רישום האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם רישום האפליקציה נראה בסדר, לוחצים על Back to Dashboard.

3. אישור פרטי כניסה לאפליקציה בשולחן העבודה

כדי לבצע אימות כמשתמשי קצה ולגשת לנתוני המשתמשים באפליקציה שלך, עליך ליצור מזהה לקוח אחד או יותר של OAuth 2.0. מזהה הלקוח משמש לזיהוי אפליקציה יחידה לשרתי OAuth של Google. אם האפליקציה פועלת בכמה פלטפורמות, צריך ליצור מזהה לקוח נפרד לכל פלטפורמה.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > Credentials.

    לדף Credentials

  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'

אחרי שמגדירים את פרטי הכניסה שמוגדרים כברירת מחדל באפליקציה (ACD), ספריות הלקוח ברוב השפות זקוקות לעזרה מינימלית, או ללא עזרה, כדי לאתר אותן.

קורל

הדרך המהירה ביותר לבדוק שזה עובד היא להשתמש בו כדי לגשת ל-API ל-REST באמצעות 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

ב-python, ספריות הלקוח אמורות למצוא אותן באופן אוטומטי:

pip install google-generativeai

סקריפט מינימלי לבדיקה יכול להיות:

import google.generativeai as genai

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

השלבים הבאים

אם זה עובד, תוכלו לנסות אחזור סמנטי של נתוני הטקסט.

ניהול פרטי הכניסה בעצמך [Python]

במקרים רבים לא תהיה לכם אפשרות ליצור את אסימון הגישה מ-Client-ID (client_secret.json) באמצעות הפקודה gcloud. 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. פרטי ההרשאות מאוחסנים במערכת הקבצים, כך שבפעם הבאה שתריצו את הקוד לדוגמה לא תתבקשו הרשאה.

האימות הוגדר בהצלחה.