การตรวจสอบสิทธิ์ด้วยการเริ่มต้นใช้งาน OAuth อย่างรวดเร็ว

Gemini API ช่วยให้คุณสามารถดึงข้อมูลเชิงความหมายจากข้อมูลของคุณเอง เนื่องจากเป็นข้อมูลของคุณ จึงต้องควบคุมการเข้าถึงที่เข้มงวดกว่าคีย์ API

การเริ่มต้นอย่างรวดเร็วนี้ใช้วิธีการตรวจสอบสิทธิ์แบบง่ายที่เหมาะกับสภาพแวดล้อมการทดสอบ สำหรับสภาพแวดล้อมเวอร์ชันที่ใช้งานจริง โปรดดูข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์และการให้สิทธิ์ก่อนเลือกข้อมูลเข้าสู่ระบบที่เหมาะสมกับแอปของคุณ

วัตถุประสงค์

  • ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์สำหรับ OAuth
  • ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  • จัดการข้อมูลเข้าสู่ระบบในโปรแกรมแทนการใช้ gcloud auth

ข้อกำหนดเบื้องต้น

หากต้องการเรียกใช้การเริ่มต้นอย่างรวดเร็วนี้ คุณต้องมีสิ่งต่อไปนี้

ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

คุณต้องตั้งค่าโปรเจ็กต์ Cloud ก่อนเพื่อให้การเริ่มต้นอย่างรวดเร็วนี้เสร็จสมบูรณ์

1. เปิดใช้ API

ก่อนใช้ Google APIs คุณต้องเปิดใช้ API ในโปรเจ็กต์ Google Cloud

2. กำหนดค่าหน้าจอขอความยินยอม OAuth

จากนั้น ให้กำหนดค่าหน้าจอขอความยินยอม OAuth ของโปรเจ็กต์ และเพิ่มตัวคุณเองเป็นผู้ใช้ทดสอบ หากทำตามขั้นตอนนี้สำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์เรียบร้อยแล้ว ให้ข้ามไปยังส่วนถัดไป

  1. ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > หน้าจอขอความยินยอม OAuth

    ไปที่หน้าจอขอความยินยอม OAuth

  2. เลือกประเภทผู้ใช้เป็นภายนอกของแอป แล้วคลิกสร้าง

  3. กรอกแบบฟอร์มการลงทะเบียนแอป (เว้นช่องส่วนใหญ่ว่างไว้ได้) แล้วคลิกบันทึกและต่อไป

  4. สำหรับตอนนี้ คุณอาจข้ามการเพิ่มขอบเขต แล้วคลิกบันทึกและต่อไป ในอนาคต เมื่อคุณสร้างแอปเพื่อใช้นอกองค์กร Google Workspace คุณต้องเพิ่มและยืนยันขอบเขตการให้สิทธิ์ที่แอปของคุณต้องการ

  5. เพิ่มผู้ใช้ทดสอบดังนี้

    1. ในส่วนผู้ใช้ทดสอบ ให้คลิกเพิ่มผู้ใช้
    2. ป้อนอีเมลของคุณและผู้ใช้ทดสอบคนอื่นๆ ที่ได้รับอนุญาต แล้วคลิกบันทึกและต่อไป
  6. ดูสรุปการลงทะเบียนแอป หากต้องการเปลี่ยนแปลง ให้คลิกแก้ไข หากการลงทะเบียนแอปถูกต้องแล้ว ให้คลิกกลับไปยังหน้าแดชบอร์ด

3. ให้สิทธิ์ข้อมูลเข้าสู่ระบบสำหรับแอปพลิเคชันเดสก์ท็อป

หากต้องการตรวจสอบสิทธิ์ว่าเป็นผู้ใช้ปลายทางและเข้าถึงข้อมูลผู้ใช้ในแอป คุณต้องสร้างรหัสไคลเอ็นต์ OAuth 2.0 อย่างน้อย 1 รายการ รหัสไคลเอ็นต์ใช้เพื่อระบุแอปเดียวไปยังเซิร์ฟเวอร์ OAuth ของ Google หากแอปทำงานในหลายแพลตฟอร์ม คุณต้องสร้างรหัสไคลเอ็นต์แยกกันสำหรับแต่ละแพลตฟอร์ม

  1. ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > ข้อมูลเข้าสู่ระบบ

    ไปที่ข้อมูลเข้าสู่ระบบ

  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) แล้ว ไลบรารีของไคลเอ็นต์ในภาษาส่วนใหญ่จำเป็นต้องใช้น้อยที่สุดในการค้นหาข้อมูล

ม้วนกระดาษ

วิธีที่รวดเร็วที่สุดในการทดสอบว่าวิธีนี้ได้ผลคือการใช้เพื่อเข้าถึง 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-ID (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. ข้อมูลการให้สิทธิ์จะจัดเก็บไว้ในระบบไฟล์ ดังนั้นเมื่อคุณเรียกใช้โค้ดตัวอย่างในครั้งถัดไป คุณจะไม่ได้รับข้อความแจ้งให้ให้สิทธิ์

คุณตั้งค่าการตรวจสอบสิทธิ์เรียบร้อยแล้ว