אימות באמצעות מדריך למתחילים של 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, נכנסים לתפריט > ממשקי API שירותים > OAuth מסך הסכמה.

    מעבר למסך ההסכמה של OAuth

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

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

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

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

    1. בקטע Test users לוחצים על Add users.
    2. מזינים את כתובת האימייל שלכם ואת כל המשתמשים המורשים האחרים לבדיקה, ולאחר מכן לוחצים על שמירה והמשך.
  6. מעיינים בסיכום של רישום האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם המיקום נראה שרישום האפליקציה תקין, לוחצים על חזרה למרכז השליטה.

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

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

  1. במסוף Google Cloud, נכנסים לתפריט > ממשקי API שירותים > פרטי כניסה.

    לדף Credentials

  2. לוחצים על Create Credentials > מזהה הלקוח ב-OAuth

  3. לוחצים על Application type (סוג אפליקציה) > אפליקציה למחשב.

  4. בשדה Name, מקלידים שם לפרטי הכניסה. השם הזה הוא רק שמוצגת במסוף Google Cloud.

  5. לוחצים על יצירה. יופיע המסך שנוצר על ידי לקוח OAuth ומוצג בו Client-ID ו-Client Secret.

  6. לוחצים על אישור. פרטי הכניסה החדשים שנוצרו יופיעו בקטע לקוח OAuth 2.0 המזהים.

  7. לוחצים על לחצן ההורדה כדי לשמור את קובץ ה-JSON. היא תישמר בשם client_secret_<identifier>.json, ושינוי השם ל-client_secret.json ולהעביר אותו לספריית העבודה.

הגדרת פרטי כניסה בברירת מחדל לאפליקציה

כדי להמיר את הקובץ client_secret.json לפרטי כניסה שאפשר להשתמש בהם, מעבירים את את מיקום פקודת gcloud auth application-default login ארגומנט --client-id-file.

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), הלקוח ברוב השפות, לא נדרשת עזרה כדי למצוא אותן.

Curl

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

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

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