Giống như các API khác của Google, Google Ads API sử dụng giao thức OAuth 2.0 để xác thực và uỷ quyền. OAuth 2.0 cho phép ứng dụng khách Google Ads API truy cập vào tài khoản Google Ads của người dùng mà không cần phải xử lý hoặc lưu trữ thông tin đăng nhập của người dùng.
Tìm hiểu mô hình truy cập của Google Ads
Để làm việc hiệu quả với Google Ads API, hãy tìm hiểu cách hoạt động của mô hình truy cập Google Ads. Tham khảo hướng dẫn về mô hình truy cập Google Ads.
Quy trình OAuth
Có 3 quy trình công việc phổ biến khi làm việc với Google Ads API.
Quy trình tài khoản dịch vụ
Đây là quy trình làm việc được đề xuất nếu quy trình làm việc của bạn không yêu cầu bất kỳ hoạt động tương tác nào của con người. Quy trình làm việc này yêu cầu một bước thiết lập, trong đó người dùng thêm một tài khoản dịch vụ vào tài khoản Google Ads của họ. Sau đó, ứng dụng có thể sử dụng thông tin xác thực của tài khoản dịch vụ để quản lý tài khoản Google Ads của người dùng. Thư viện Python được định cấu hình như sau:
Nếu bạn sử dụng tệp
google-ads.yamlhoặc chuỗi YAML, hãy thêm nội dung sau vào cấu hình để đặt đường dẫn đến tệp JSON của khoá riêng tư trong môi trường cục bộ (cùng vớiimpersonated_emailkhông bắt buộc nếu sử dụng tính năng uỷ quyền trên toàn miền):json_key_file_path: JSON_KEY_FILE_PATH # Optional: only set if using Google Workspace domain-wide delegation: # impersonated_email: IMPERSONATED_EMAILSau đó, hãy gọi phương thức
load_from_storagehoặcload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Nếu bạn đang sử dụng
dictđể định cấu hình thư viện, hãy thêm cặp khoá-giá trị sau đây và gọi phương thứcload_from_dict, truyền vào cấu hìnhdict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH, # ... } client = GoogleAdsClient.load_from_dict(configuration)Nếu bạn đang sử dụng biến môi trường, hãy thêm nội dung sau vào cấu hình hoặc môi trường
bashcủa bạn:export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATHSau đó, hãy gọi phương thức
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Nếu lựa chọn cấu hình json_key_file_path có trong bất kỳ phương thức cấu hình nào, thì lựa chọn use_application_default_credentials sẽ là False hoặc không được đặt, và các khoá thông tin xác thực người dùng OAuth (client_id, client_secret và refresh_token) không được đặt hoặc được đánh dấu là nội dung nhận xét, thư viện sẽ tự động uỷ quyền bằng luồng tài khoản dịch vụ.
Hãy tham khảo hướng dẫn về quy trình làm việc của tài khoản dịch vụ để tìm hiểu thêm.
Quy trình xác thực một người dùng
Bạn có thể sử dụng quy trình này nếu không thể sử dụng tài khoản dịch vụ. Quy trình này yêu cầu hai bước định cấu hình:
Cấp cho một người dùng quyền truy cập vào tất cả tài khoản cần quản lý bằng Google Ads API. Một phương pháp phổ biến là cấp cho người dùng quyền truy cập vào tài khoản người quản lý Google Ads API và liên kết tất cả tài khoản Google Ads trong tài khoản người quản lý đó.
Người dùng chạy một công cụ như gcloud CLI hoặc ví dụ về mã
generate_user_credentialsđể cho phép ứng dụng của bạn thay mặt họ quản lý tất cả tài khoản Google Ads của họ.
Bạn có thể khởi chạy thư viện bằng thông tin đăng nhập OAuth 2.0 của người dùng như sau:
Nếu sử dụng công cụ gcloud CLI (nên dùng)
Làm theo tài liệu Tạo thông tin xác thực để thiết lập thông tin xác thực mặc định của ứng dụng (ADC) trong môi trường cục bộ.
Thêm cấu hình sau vào chuỗi
google-ads.yamlhoặc YAML:use_application_default_credentials: trueSau đó, hãy gọi phương thức
load_from_storagehoặcload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Nếu bạn sử dụng
dictđể định cấu hình thư viện, hãy thêm cặp khoá-giá trị sau đây và gọi phương thứcload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_application_default_credentials": True, # ... } client = GoogleAdsClient.load_from_dict(configuration)Nếu bạn đang sử dụng biến môi trường, hãy thêm nội dung sau vào cấu hình hoặc môi trường
bashcủa bạn:export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS=trueSau đó, hãy gọi phương thức
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Trường hợp trực tiếp xử lý mã thông báo OAuth
Làm theo các bước để thiết lập dự án trên Google Cloud Console và tải tệp JSON chứa mã ứng dụng khách và khoá bí mật của ứng dụng khách của dự án xuống.
Sao chép thư viện ứng dụng Python vào máy của bạn và thay đổi thư mục của thư viện:
git clone https://github.com/googleads/google-ads-python.git cd google-ads-pythonThực thi ví dụ, cung cấp đường dẫn tuyệt đối đến tệp JSON đã tải xuống ở bước 1:
python examples/authentication/generate_user_credentials.py \ -c PATH_TO_CREDENTIALS_JSONSau khi hoàn tất, mã làm mới sẽ được in ra bảng điều khiển của bạn. Sao chép và lưu mã này để dùng cho bước tiếp theo.
Định cấu hình thư viện bằng cách thêm các chế độ cài đặt sau vào cấu hình bạn chọn:
Thêm cấu hình sau vào chuỗi
google-ads.yamlhoặc YAML:client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HERESau đó, hãy gọi phương thức
load_from_storagehoặcload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Nếu bạn đang sử dụng
dictđể định cấu hình thư viện, hãy thêm các cặp khoá-giá trị sau đây và gọi phương thứcload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "client_id": INSERT_OAUTH2_CLIENT_ID_HERE, "client_secret": ( INSERT_OAUTH2_CLIENT_SECRET_HERE ), "refresh_token": INSERT_REFRESH_TOKEN_HERE, # ... } client = GoogleAdsClient.load_from_dict(configuration)Nếu bạn đang sử dụng biến môi trường, hãy thêm nội dung sau vào cấu hình hoặc môi trường
bashcủa bạn:export GOOGLE_ADS_CLIENT_ID=\ INSERT_OAUTH2_CLIENT_ID_HERE export GOOGLE_ADS_CLIENT_SECRET=\ INSERT_OAUTH2_CLIENT_SECRET_HERE export GOOGLE_ADS_REFRESH_TOKEN=\ INSERT_REFRESH_TOKEN_HERESau đó, hãy gọi phương thức
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Hãy tham khảo hướng dẫn về quy trình xác thực một người dùng để tìm hiểu thêm.
Quy trình xác thực nhiều người dùng
Đây là quy trình làm việc được đề xuất nếu ứng dụng của bạn cho phép người dùng đăng nhập và uỷ quyền cho ứng dụng quản lý tài khoản Google Ads thay mặt họ. Ứng dụng của bạn sẽ tạo và quản lý thông tin xác thực người dùng OAuth 2.0. Bạn có thể khởi chạy thư viện bằng thông tin xác thực của người dùng như sau, giả sử rằng ứng dụng của bạn lấy thông tin xác thực trong thời gian chạy, bằng cách thực thi quy trình uỷ quyền hoặc bằng cách tải thông tin xác thực từ kho dữ liệu:
dict là cơ chế cấu hình đơn giản nhất để sử dụng khi lấy thông tin xác thực trong thời gian chạy:
from google.ads.googleads.client import GoogleAdsClient
configuration = {
# ...
"client_id": client_id,
"client_secret": client_secret,
"refresh_token": refresh_token,
# ...
}
client = GoogleAdsClient.load_from_dict(configuration)
Tham khảo hướng dẫn về quy trình xác thực nhiều người dùng để tìm hiểu thêm.
Xác thực thủ công
Bạn có thể tạo thông tin xác thực bằng bất kỳ phương pháp nào và cung cấp thông tin đó cho GoogleAdsClient theo cách thủ công bằng cách tạo thực thể trực tiếp cho lớp ứng dụng. Giả sử đối tượng thông tin xác thực mà bạn tạo là một thực thể của google.auth.credentials.Credentials, bạn có thể truyền đối tượng đó như sau:
from google.ads.googleads.client import GoogleAdsClient
from google.auth import default
# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`.
credentials, _ = default(scopes=["https://www.googleapis.com/auth/adwords"])
client = GoogleAdsClient(
credentials=credentials,
use_proto_plus=True,
)
Quản lý nhiều tài khoản
Người dùng thường quản lý nhiều tài khoản Google Ads, thông qua quyền truy cập trực tiếp vào tài khoản hoặc thông qua tài khoản người quản lý Google Ads. Thư viện ứng dụng Python cung cấp các ví dụ về mã sau đây minh hoạ cách xử lý những trường hợp như vậy:
- Ví dụ về mã
get_account_hierarchycho biết cách truy xuất danh sách tất cả tài khoản trong một tài khoản người quản lý Google Ads. - Ví dụ về mã
list_accessible_customerscho biết cách truy xuất danh sách tất cả tài khoản mà người dùng có quyền truy cập trực tiếp. Sau đó, bạn có thể sử dụng các tài khoản này làm giá trị hợp lệ cho chế độ cài đặtlogin_customer_id.