احراز هویت با شروع سریع OAuth، احراز هویت با شروع سریع OAuth

ساده‌ترین راه برای احراز هویت در رابط برنامه‌نویسی Gemini، پیکربندی یک کلید API است، همانطور که در راهنمای سریع رابط برنامه‌نویسی Gemini توضیح داده شده است. اگر به کنترل‌های دسترسی سختگیرانه‌تری نیاز دارید، می‌توانید به جای آن از OAuth استفاده کنید. این راهنما به شما کمک می‌کند تا احراز هویت را با OAuth تنظیم کنید.

این راهنما از یک رویکرد احراز هویت ساده‌شده استفاده می‌کند که برای محیط آزمایش مناسب است. برای محیط عملیاتی، قبل از انتخاب اعتبارنامه‌های دسترسی مناسب برای برنامه خود، در مورد احراز هویت و مجوز اطلاعات کسب کنید.

اهداف

  • پروژه ابری خود را برای OAuth تنظیم کنید
  • تنظیم اعتبارنامه‌های پیش‌فرض برنامه
  • به جای استفاده از gcloud auth اعتبارنامه‌ها را در برنامه خود مدیریت کنید

پیش‌نیازها

برای اجرای این شروع سریع، به موارد زیر نیاز دارید:

پروژه ابری خود را راه‌اندازی کنید

برای تکمیل این شروع سریع، ابتدا باید پروژه Cloud خود را راه‌اندازی کنید.

۱. فعال کردن API

قبل از استفاده از API های گوگل، باید آنها را در یک پروژه Google Cloud فعال کنید.

  • در کنسول گوگل کلود، رابط برنامه‌نویسی کاربردی زبان‌های نسل گوگل (Google Generation Language API) را فعال کنید.

    فعال کردن API

۲. صفحه رضایت OAuth را پیکربندی کنید

سپس صفحه رضایت OAuth پروژه را پیکربندی کنید و خود را به عنوان یک کاربر آزمایشی اضافه کنید. اگر قبلاً این مرحله را برای پروژه Cloud خود انجام داده‌اید، به بخش بعدی بروید.

  1. در کنسول گوگل کلود، به منو > پلتفرم گوگل آث > نمای کلی بروید.

    به پلتفرم Google Auth بروید

  2. فرم پیکربندی پروژه را تکمیل کنید و در قسمت مخاطبان، نوع کاربر را روی خارجی (External) تنظیم کنید.

  3. بقیه فرم را تکمیل کنید، شرایط سیاست داده‌های کاربر را بپذیرید و سپس روی ایجاد کلیک کنید.

  4. فعلاً می‌توانید از اضافه کردن محدوده‌ها صرف نظر کنید و روی ذخیره و ادامه کلیک کنید. در آینده، وقتی برنامه‌ای را برای استفاده در خارج از سازمان Google Workspace خود ایجاد می‌کنید، باید محدوده‌های مجوز مورد نیاز برنامه خود را اضافه و تأیید کنید.

  5. اضافه کردن کاربران آزمایشی:

    1. به صفحه مخاطبان پلتفرم Google Auth بروید.
    2. در قسمت کاربران آزمایشی ، روی افزودن کاربران کلیک کنید.
    3. آدرس ایمیل خود و سایر کاربران آزمایشی مجاز را وارد کنید، سپس روی ذخیره کلیک کنید.

۳. اعتبارنامه‌های یک برنامه دسکتاپ را تأیید کنید

برای احراز هویت به عنوان کاربر نهایی و دسترسی به داده‌های کاربر در برنامه خود، باید یک یا چند شناسه کلاینت OAuth 2.0 ایجاد کنید. شناسه کلاینت برای شناسایی یک برنامه واحد به سرورهای OAuth گوگل استفاده می‌شود. اگر برنامه شما روی چندین پلتفرم اجرا می‌شود، باید برای هر پلتفرم یک شناسه کلاینت جداگانه ایجاد کنید.

  1. در کنسول گوگل کلود، به منو > پلتفرم گوگل آث > کلاینت‌ها بروید.

    به اعتبارنامه‌ها بروید

  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'

راه‌اندازی ساده‌شده‌ی پروژه در این آموزش، پنجره‌ی «گوگل این برنامه را تأیید نکرده است» را فعال می‌کند. این طبیعی است، «ادامه» را انتخاب کنید.

این کار توکن حاصل را در یک مکان شناخته‌شده قرار می‌دهد تا 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"'

پایتون

در پایتون، کتابخانه‌های کلاینت باید آنها را به‌طور خودکار پیدا کنند:

pip install google-genai

یک اسکریپت حداقلی برای آزمایش آن می‌تواند این باشد:

from google import genai

client = genai.Client()
print('Available base models:', [m.name for m in client.models.list()])

مراحل بعدی

اگر این روش جواب داد، آماده‌اید تا بازیابی معنایی را روی داده‌های متنی خود امتحان کنید.

مدیریت اعتبارنامه‌ها توسط خودتان [پایتون]

در بسیاری از موارد، دستور gcloud برای ایجاد توکن دسترسی از شناسه کلاینت ( client_secret.json ) در دسترس نخواهد بود. گوگل کتابخانه‌هایی را به زبان‌های مختلف ارائه می‌دهد تا به شما امکان دهد این فرآیند را در برنامه خود مدیریت کنید. این بخش، این فرآیند را در پایتون نشان می‌دهد. نمونه‌های معادلی از این نوع رویه برای زبان‌های دیگر وجود دارد که در مستندات Drive API موجود است.

۱. کتابخانه‌های لازم را نصب کنید

کتابخانه کلاینت گوگل برای پایتون و کتابخانه کلاینت جمینی را نصب کنید.

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

۲. مدیریت اعتبارنامه را بنویسید

برای به حداقل رساندن تعداد دفعاتی که باید روی صفحات احراز هویت کلیک کنید، فایلی به نام 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

۳. برنامه خود را بنویسید

حالا script.py خود را ایجاد کنید:

import pprint
from google import genai
from load_creds import load_creds

creds = load_creds()

client = genai.Client(credentials=creds)

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

۴. برنامه خود را اجرا کنید

در دایرکتوری کاری خود، نمونه را اجرا کنید:

python script.py

اولین باری که اسکریپت را اجرا می‌کنید، یک پنجره مرورگر باز می‌شود و از شما می‌خواهد که اجازه دسترسی را بدهید.

  1. اگر قبلاً به حساب گوگل خود وارد نشده‌اید، از شما خواسته می‌شود که وارد شوید. اگر با چندین حساب وارد شده‌اید، حتماً هنگام پیکربندی پروژه خود، حسابی را که به عنوان «حساب آزمایشی» تنظیم کرده‌اید، انتخاب کنید.

  2. اطلاعات مجوز در سیستم فایل ذخیره می‌شود، بنابراین دفعه بعد که کد نمونه را اجرا می‌کنید، از شما درخواست مجوز نمی‌شود.

شما با موفقیت احراز هویت را تنظیم کردید.