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

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

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

اهداف

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

پیش نیازها

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

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

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

1. API را فعال کنید

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

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

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

  1. در کنسول Google Cloud، به منو > APIs & Services > صفحه رضایت OAuth بروید.

    به صفحه رضایت OAuth بروید

  2. نوع کاربری خارجی را برای برنامه خود انتخاب کنید، سپس روی ایجاد کلیک کنید.

  3. فرم ثبت نام برنامه را تکمیل کنید (شما می توانید بیشتر فیلدها را خالی بگذارید)، سپس روی ذخیره و ادامه کلیک کنید.

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

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

    1. در بخش تست کاربران ، روی افزودن کاربران کلیک کنید.
    2. آدرس ایمیل خود و سایر کاربران آزمایشی مجاز را وارد کنید، سپس روی ذخیره و ادامه کلیک کنید.
  6. خلاصه ثبت برنامه خود را مرور کنید. برای ایجاد تغییرات، روی ویرایش کلیک کنید. اگر ثبت برنامه خوب به نظر می رسد، روی بازگشت به داشبورد کلیک کنید.

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

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

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.

  3. روی نوع برنامه > برنامه دسکتاپ کلیک کنید.

  4. در قسمت نام ، نامی را برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.

  5. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.

  6. روی OK کلیک کنید. اعتبار جدید ایجاد شده در شناسه های مشتری 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) را تنظیم کردید، کتابخانه های سرویس گیرنده در اکثر زبان ها برای یافتن آنها به حداقل یا بدون کمک نیاز دارند.

حلقه کردن

سریع‌ترین راه برای آزمایش عملکرد این است که از آن برای دسترسی به 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-generativeai

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

import google.generativeai as genai

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

مراحل بعدی

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

اعتبارنامه ها را خودتان مدیریت کنید [Python]

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

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

کتابخانه سرویس گیرنده Google را برای پایتون و کتابخانه مشتری 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. اطلاعات مجوز در سیستم فایل ذخیره می شود، بنابراین دفعه بعد که کد نمونه را اجرا می کنید، از شما درخواست مجوز نمی شود.

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