Xác thực bằng tính năng bắt đầu nhanh OAuth

Cách dễ nhất để xác thực API Gemini là định cấu hình khoá API, như mô tả trong phần bắt đầu nhanh về Gemini API. Nếu cần các chế độ kiểm soát quyền truy cập nghiêm ngặt hơn, bạn có thể sử dụng OAuth. Hướng dẫn này sẽ giúp bạn thiết lập tính năng xác thực bằng OAuth.

Hướng dẫn này sử dụng phương pháp xác thực đơn giản phù hợp với môi trường thử nghiệm. Đối với môi trường phát hành công khai, hãy tìm hiểu về quy trình xác thực và uỷ quyền trước khi chọn thông tin xác thực truy cập phù hợp với ứng dụng.

Mục tiêu

  • Thiết lập dự án trên đám mây cho OAuth
  • Thiết lập application-default-credentials
  • Quản lý thông tin xác thực trong chương trình thay vì sử dụng gcloud auth

Điều kiện tiên quyết

Để chạy hướng dẫn nhanh này, bạn cần:

Thiết lập dự án trên đám mây

Để hoàn tất hướng dẫn nhanh này, trước tiên, bạn cần thiết lập dự án trên Google Cloud.

1. Bật API

Trước khi sử dụng API của Google, bạn cần bật các API đó trong một dự án Google Cloud.

  • Trong Google Cloud Console, hãy bật API Ngôn ngữ tạo sinh của Google.

    Bật API

2. Định cấu hình màn hình xin phép bằng OAuth

Tiếp theo, hãy định cấu hình màn hình xin phép bằng OAuth của dự án và thêm chính bạn làm người dùng thử nghiệm. Nếu bạn đã hoàn tất bước này cho dự án trên Google Cloud, hãy chuyển sang phần tiếp theo.

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > màn hình yêu cầu sự đồng ý của OAuth.

    Chuyển đến màn hình xin phép bằng OAuth

  2. Chọn loại người dùng External (Bên ngoài) cho ứng dụng, sau đó nhấp vào Create (Tạo).

  3. Hoàn tất biểu mẫu đăng ký ứng dụng (bạn có thể để trống hầu hết các trường), sau đó nhấp vào Lưu và tiếp tục.

  4. Hiện tại, bạn có thể bỏ qua bước thêm phạm vi và nhấp vào Lưu và tiếp tục. Trong tương lai, khi tạo một ứng dụng để sử dụng bên ngoài tổ chức Google Workspace, bạn phải thêm và xác minh các phạm vi uỷ quyền mà ứng dụng yêu cầu.

  5. Thêm người dùng thử nghiệm:

    1. Trong phần Người dùng thử nghiệm, hãy nhấp vào Thêm người dùng.
    2. Nhập địa chỉ email của bạn và mọi người dùng thử nghiệm được uỷ quyền khác, sau đó nhấp vào Save and Continue (Lưu và tiếp tục).
  6. Xem lại thông tin tóm tắt về việc đăng ký ứng dụng. Để chỉnh sửa, hãy nhấp vào Chỉnh sửa. Nếu bạn thấy quá trình đăng ký ứng dụng đã hoàn tất, hãy nhấp vào Quay lại trang tổng quan.

3. Cấp thông tin đăng nhập cho ứng dụng dành cho máy tính

Để xác thực dưới dạng người dùng cuối và truy cập vào dữ liệu người dùng trong ứng dụng, bạn cần tạo một hoặc nhiều mã ứng dụng khách OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng với máy chủ OAuth của Google. Nếu ứng dụng của bạn chạy trên nhiều nền tảng, bạn phải tạo một mã ứng dụng khách riêng cho từng nền tảng.

  1. Trong Google Cloud Console, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin xác thực.

    Chuyển đến phần Thông tin xác thực

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.

  3. Nhấp vào Loại ứng dụng > Ứng dụng dành cho máy tính.

  4. Trong trường Name (Tên), hãy nhập tên cho thông tin xác thực. Tên này chỉ xuất hiện trong Google Cloud Console.

  5. Nhấp vào Tạo. Màn hình OAuth do ứng dụng tạo sẽ xuất hiện, cho thấy Mã ứng dụng khách và Mật khẩu ứng dụng mới của bạn.

  6. Nhấp vào OK. Thông tin xác thực mới tạo sẽ xuất hiện trong phần Mã ứng dụng OAuth 2.0.

  7. Nhấp vào nút tải xuống để lưu tệp JSON. Tệp này sẽ được lưu dưới dạng client_secret_<identifier>.json, đổi tên thành client_secret.json rồi di chuyển vào thư mục đang hoạt động.

Thiết lập thông tin xác thực mặc định của ứng dụng

Để chuyển đổi tệp client_secret.json thành thông tin xác thực có thể sử dụng, hãy truyền vị trí của tệp đó vào đối số --client-id-file của lệnh 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'

Quy trình thiết lập dự án đơn giản trong hướng dẫn này sẽ kích hoạt hộp thoại "Google chưa xác minh ứng dụng này". Đây là hiện tượng bình thường, hãy chọn "tiếp tục".

Thao tác này sẽ đặt mã thông báo thu được ở một vị trí nổi tiếng để gcloud hoặc các thư viện ứng dụng có thể truy cập vào mã đó.

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'

Sau khi bạn đặt thông tin xác thực mặc định của ứng dụng (ACD), thư viện ứng dụng trong hầu hết các ngôn ngữ sẽ không cần đến sự trợ giúp để tìm thông tin xác thực.

Curl

Cách nhanh nhất để kiểm tra xem API này có hoạt động hay không là sử dụng API này để truy cập vào API REST bằng 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

Trong python, các thư viện ứng dụng sẽ tự động tìm thấy các thư viện đó:

pip install google-generativeai

Bạn có thể sử dụng tập lệnh tối thiểu sau để kiểm thử:

import google.generativeai as genai

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

Các bước tiếp theo

Nếu cách này hoạt động, bạn có thể thử Truy xuất ngữ nghĩa trên dữ liệu văn bản.

Tự quản lý thông tin xác thực [Python]

Trong nhiều trường hợp, bạn sẽ không có lệnh gcloud để tạo mã thông báo truy cập từ mã ứng dụng (client_secret.json). Google cung cấp các thư viện bằng nhiều ngôn ngữ để cho phép bạn quản lý quy trình đó trong ứng dụng. Phần này minh hoạ quy trình này bằng python. Bạn có thể xem các ví dụ tương đương về quy trình này đối với các ngôn ngữ khác trong tài liệu về API Drive.

1. Cài đặt các thư viện cần thiết

Cài đặt thư viện ứng dụng Google cho Python và thư viện ứng dụng Gemini.

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

2. Ghi trình quản lý thông tin xác thực

Để giảm thiểu số lần bạn phải nhấp qua các màn hình uỷ quyền, hãy tạo một tệp có tên là load_creds.py trong thư mục đang hoạt động để lưu vào bộ nhớ đệm một tệp token.json mà sau này có thể sử dụng lại hoặc làm mới nếu tệp đó hết hạn.

Bắt đầu bằng mã sau để chuyển đổi tệp client_secret.json thành mã thông báo có thể sử dụng với 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. Viết chương trình

Bây giờ, hãy tạo 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. Chạy chương trình

Trong thư mục đang hoạt động, hãy chạy mẫu:

python script.py

Trong lần đầu chạy tập lệnh, tập lệnh sẽ mở một cửa sổ trình duyệt và nhắc bạn cấp quyền truy cập.

  1. Nếu chưa đăng nhập vào Tài khoản Google, bạn sẽ được nhắc đăng nhập. Nếu bạn đã đăng nhập vào nhiều tài khoản, hãy nhớ chọn tài khoản mà bạn đặt làm "Tài khoản thử nghiệm" khi định cấu hình dự án.

  2. Thông tin uỷ quyền được lưu trữ trong hệ thống tệp, vì vậy, lần tiếp theo bạn chạy mã mẫu, bạn sẽ không được nhắc uỷ quyền.

Bạn đã thiết lập thành công phương thức xác thực.