Giống như các API khác của Google, API Google Ads 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 máy khách Google Ads API của bạn truy cập vào tài khoản Google Ads của người dùng mà không cần xử lý hoặc lưu trữ thông tin đăng nhập của người dùng.
Tìm hiểu về mô hình truy cập của Google Ads
Để làm việc hiệu quả với API Google Ads, bạn nên hiểu cách hoạt động của mô hình truy cập Google Ads. Bạn nên đọc 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 được sử dụng khi làm việc với API Google Ads.
Luồng tài khoản dịch vụ
Đây là quy trình được đề xuất nếu quy trình 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 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 đăng nhập 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 đang 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 khoá riêng tư trong môi trường cục bộ:json_key_file_path: JSON_KEY_FILE_PATHSau đó, 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 dùng
dictđể định cấu hình thư viện, hãy thêm cặp khoá-giá trị sau và gọi phương thứcload_from_dict, truyền cấu hìnhdictvào: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 các 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 trong số này và lựa chọn use_application_default_credentials là False hoặc chưa được đặt, thì thư viện sẽ tự động uỷ quyền bằng quy trình tài khoản dịch vụ.
Hãy tham khảo hướng dẫn về quy trình 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ể dùng tài khoản dịch vụ. Quy trình này yêu cầu 2 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ả các tài khoản cần quản lý bằng API Google Ads. 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để uỷ quyền cho ứng dụng của bạn quản lý tất cả tài khoản Google Ads của họ thay cho họ.
Bạn có thể khởi động thư viện bằng thông tin đăng nhập OAuth 2.0 của người dùng như sau:
Nếu bạn 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
google-ads.yamlhoặc chuỗi 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 dùng
dictđể định cấu hình thư viện, hãy thêm cặp khoá-giá trị sau và gọi phương thứcload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_account_default_credentials": True # ... } client = GoogleAdsClient.load_from_dict(configuration)Nếu bạn đang sử dụng các 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_ACCOUNT_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()
Nếu xử lý trực tiếp mã thông báo OAuth
Hãy làm theo các bước để thiết lập một dự án trên bảng điều khiển và tải tệp JSON xuống. Tệp này chứa mã ứng dụng và khoá bí mật ứng dụng của dự án.
Sao chép thư viện ứng dụng Python vào máy của bạn và thay đổi thành 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 một đườ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ột mã làm mới sẽ xuất hiện trên bảng điều khiển. Sao chép và lưu mã này để dùng trong 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 mà bạn chọn:
Thêm cấu hình sau vào
google-ads.yamlhoặc chuỗi 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 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 các 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 đượ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 của bạn quản lý tài khoản Google Ads thay cho 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 đăng nhập của người dùng như sau. Điều này giả định rằng ứng dụng của bạn sẽ lấy thông tin đăng nhập trong thời gian chạy, bằng cách thực thi một quy trình uỷ quyền hoặc bằng cách tải thông tin đăng nhập từ mộ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 đăng nhập 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)
Hãy 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 mọi phương pháp và cung cấp thông tin đó cho GoogleAdsClient theo cách thủ công bằng cách trực tiếp tạo thực thể cho lớp ứng dụng. Giả sử đối tượng thông tin đăng nhập 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 đó vào 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,
# ... insert remaining parameters
)
Điều gì sẽ xảy ra nếu người dùng của tôi 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 thấy 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 thấy cách truy xuất danh sách tất cả cá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ể dùng các tài khoản này làm giá trị hợp lệ cho chế độ cài đặtlogin_customer_id.