OAuth क्विकस्टार्ट की मदद से पुष्टि करना

Gemini API की मदद से, अपने डेटा को सिमैंटिक तरीके से वापस लाया जा सकता है. यह आपका डेटा है, इसलिए इसके लिए एपीआई कुंजियों के मुकाबले बेहतर ऐक्सेस कंट्रोल की ज़रूरत है.

यह क्विकस्टार्ट, पुष्टि करने के आसान तरीके का इस्तेमाल करता है, जो टेस्टिंग एनवायरमेंट के लिए सही है. प्रोडक्शन एनवायरमेंट के लिए, अपने ऐप्लिकेशन के लिए सही ऐक्सेस क्रेडेंशियल चुनने से पहले, पुष्टि करने और अनुमति देने के बारे में जानें.

मकसद

  • OAuth के लिए अपना क्लाउड प्रोजेक्ट सेट अप करना
  • ऐप्लिकेशन-डिफ़ॉल्ट-क्रेडेंशियल सेट अप करें
  • gcloud auth का इस्तेमाल करने के बजाय, अपने प्रोग्राम में क्रेडेंशियल मैनेज करें

ज़रूरी शर्तें

इस क्विकस्टार्ट चलाने के लिए, आपको इनकी ज़रूरत होगी:

अपना क्लाउड प्रोजेक्ट सेट अप करें

इस क्विकस्टार्ट को पूरा करने के लिए, आपको सबसे पहले अपना Cloud प्रोजेक्ट सेटअप करना होगा.

1. एपीआई चालू करें

Google API का इस्तेमाल करने से पहले, आपको उन्हें Google Cloud प्रोजेक्ट में चालू करना होगा.

2. उस स्क्रीन को कॉन्फ़िगर करना जहां OAuth के लिए सहमति दी जाती है

इसके बाद, उस स्क्रीन को कॉन्फ़िगर करें जहां OAuth के लिए सहमति दी जाती है और खुद को टेस्ट उपयोगकर्ता के तौर पर जोड़ें. अगर आपने अपने Cloud प्रोजेक्ट के लिए यह चरण पहले ही पूरा कर लिया है, तो सीधे अगले सेक्शन पर जाएं.

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > OAuth सहमति स्क्रीन पर जाएं.

    ऐसी स्क्रीन पर जाएं जहां OAuth के लिए सहमति दी जाती है

  2. अपने ऐप्लिकेशन के लिए, बाहरी उपयोगकर्ता टाइप चुनें. इसके बाद, बनाएं पर क्लिक करें.

  3. ऐप्लिकेशन रजिस्ट्रेशन फ़ॉर्म भरें (ज़्यादातर फ़ील्ड को खाली छोड़ा जा सकता है). इसके बाद, सेव करें और जारी रखें पर क्लिक करें.

  4. फ़िलहाल, दायरों को छोड़कर आगे बढ़ा जा सकता है. साथ ही, सेव करें और जारी रखें पर क्लिक करें. आने वाले समय में, जब अपने Google Workspace संगठन से बाहर इस्तेमाल करने के लिए ऐप्लिकेशन बनाया जाएगा, तो आपको अनुमति के उन दायरों को जोड़ना होगा और उनकी पुष्टि करनी होगी जो आपके ऐप्लिकेशन को चाहिए.

  5. टेस्ट उपयोगकर्ताओं को जोड़ें:

    1. टेस्ट उपयोगकर्ता में जाकर, उपयोगकर्ताओं को जोड़ें पर क्लिक करें.
    2. अपना ईमेल पता और टेस्ट के लिए अनुमति पा चुके किसी अन्य उपयोगकर्ता का ईमेल पता डालें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.
  6. अपने ऐप्लिकेशन रजिस्ट्रेशन की खास जानकारी देखें. बदलाव करने के लिए, बदलाव करें पर क्लिक करें. अगर ऐप्लिकेशन रजिस्ट्रेशन ठीक दिखता है, तो डैशबोर्ड पर वापस जाएं पर क्लिक करें.

3. डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल की पुष्टि करना

असली उपयोगकर्ता के तौर पर पुष्टि करने और अपने ऐप्लिकेशन में उपयोगकर्ता का डेटा ऐक्सेस करने के लिए, आपको एक या उससे ज़्यादा OAuth 2.0 क्लाइंट आईडी बनाने होंगे. Client-ID का इस्तेमाल, Google के OAuth सर्वर पर किसी एक ऐप्लिकेशन की पहचान करने के लिए किया जाता है. अगर आपका ऐप्लिकेशन एक से ज़्यादा प्लैटफ़ॉर्म पर चलता है, तो आपको हर प्लैटफ़ॉर्म के लिए अलग-अलग क्लाइंट आईडी बनाना होगा.

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.

  3. ऐप्लिकेशन टाइप > डेस्कटॉप ऐप्लिकेशन पर क्लिक करें.

  4. नाम फ़ील्ड में, क्रेडेंशियल के लिए नाम लिखें. यह नाम सिर्फ़ Google Cloud कंसोल में दिखता है.

  5. बनाएं पर क्लिक करें. अब OAuth क्लाइंट की स्क्रीन पर आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.

  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 ने इस ऐप्लिकेशन की पुष्टि नहीं की है" डायलॉग ट्रिगर होता है. यह सामान्य है, "Continue" चुनें.

इससे, मिलने वाले टोकन को सही जगह पर रखा जाता है, ताकि उसे 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'

ऐप्लिकेशन के लिए डिफ़ॉल्ट क्रेडेंशियल (एसीडी) सेट हो जाने के बाद, ज़्यादातर भाषाओं में क्लाइंट लाइब्रेरी को ढूंढने में कम से कम मदद मिलती है या कोई मदद नहीं मिलती.

कर्ल

यह काम कर रहा है या नहीं, यह पता लगाने का सबसे तेज़ तरीका यह है कि आप कर्ल का इस्तेमाल करके REST API को ऐक्सेस करने के लिए इसका इस्तेमाल करें:

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. ज़रूरी लाइब्रेरी इंस्टॉल करें

Python के लिए 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. अनुमति देने की जानकारी, फ़ाइल सिस्टम में सेव की जाती है. इसलिए, अगली बार सैंपल कोड चलाने पर, आपसे अनुमति लेने के लिए नहीं कहा जाता.

आपने पुष्टि करने की प्रक्रिया को सेटअप कर लिया है.