Tương tự như quy trình tài khoản dịch vụ, quy trình xác thực một người dùng sử dụng các tính năng uỷ quyền và quản lý người dùng do giao diện người dùng Google Ads cung cấp để cấp cho ứng dụng quyền truy cập vào tất cả các tài khoản cần thiết. Quy trình xác thực này có hai bước:
- Bạn cấp cho một người dùng duy nhất quyền truy cập vào tất cả tài khoản Google Ads mà ứng dụng sẽ quản lý.
- Người dùng cho phép ứng dụng của bạn quản lý tài khoản Google Ads của họ thay cho họ, nhờ đó cấp cho ứng dụng quyền truy cập vào tất cả tài khoản Google Ads.
Vì chỉ có một người dùng liên quan, nên bạn có thể dựa vào các công cụ như gcloud CLI hoặc ví dụ về mã GenerateUserCredential thay vì tạo quy trình xác thực người dùng OAuth 2.0 của riêng bạn.
Một trường hợp sử dụng liên quan cho quy trình này là khi tài khoản của bạn có thể được truy cập thông qua một số ít thông tin đăng nhập của người dùng (ví dụ: 3 đến 4 người dùng), vì vậy, nỗ lực phát triển để xây dựng một quy trình xác thực nhiều người dùng OAuth hoàn chỉnh là không hợp lý khi so sánh với nỗ lực để có được uỷ quyền cho 3 đến 4 người dùng bằng một công cụ dòng lệnh như gcloud CLI.
Nhược điểm
Quy trình này có một số nhược điểm so với quy trình tài khoản dịch vụ:
- Quy trình xác thực người dùng yêu cầu bạn tạo mã ứng dụng khách và khoá bí mật OAuth 2.0 trong Bảng điều khiển của Google Cloud. Quy trình này đòi hỏi nhiều bước thiết lập hơn so với việc tạo một tài khoản dịch vụ và khoá.
- Nếu người dùng được uỷ quyền rời khỏi nhóm hoặc công ty, thì ứng dụng của bạn có thể ngừng hoạt động nếu bạn xoá người dùng khỏi tài khoản hoặc vô hiệu hoá tài khoản người dùng. Tài khoản dịch vụ không liên kết với người dùng cá nhân, vì vậy, rủi ro này sẽ được loại bỏ.
- Người dùng uỷ quyền cho tài khoản Google Ads nên bật khoá truy cập trong Tài khoản Google của họ để ngăn chặn Tài khoản Google bị xâm nhập do bảo mật kém, phần mềm độc hại hoặc hành vi lừa đảo. Bạn không bắt buộc phải dùng tài khoản dịch vụ để bật khoá truy cập và tài khoản dịch vụ ít bị ảnh hưởng bởi vấn đề này hơn vì một số phương thức tấn công này không áp dụng trực tiếp cho tài khoản dịch vụ.
Tạo thông tin đăng nhập
Định cấu hình màn hình xin phép bằng OAuth cho ứng dụng của bạn và thêm
https://www.googleapis.com/auth/adwordslàm phạm vi OAuth 2.0. Hãy xem phần Thiết lập màn hình xin phép bằng OAuth để biết thông tin chi tiết.Tạo mã ứng dụng khách và khoá bí mật của ứng dụng khách bằng cách làm theo hướng dẫn. Sau khi tạo ứng dụng OAuth 2.0, hãy tải tệp JSON của ứng dụng xuống bằng cách nhấp vào nút Tải JSON xuống trên hộp thoại xác nhận. Lưu tệp dưới dạng
credentials.json.Xác định một tài khoản người dùng có quyền truy cập vào tất cả tài khoản Google Ads mà bạn muốn quản lý bằng ứng dụng của mình. Nếu có những tài khoản bị thiếu quyền truy cập, hãy cấp quyền truy cập vào tài khoản cho người dùng đó.
Tải xuống và cài đặt gcloud CLI. Sau khi cài đặt, hãy xác minh rằng công cụ hoạt động đúng cách bằng cách chạy lệnh
gcloud versiontừ dấu nhắc dòng lệnh. Kết quả sẽ có dạng như sau:gcloud versionGoogle Cloud SDK 492.0.0 alpha 2024.09.06 beta 2024.09.06 bq 2.1.8 bundled-python3-unix 3.11.9 core 2024.09.06 enterprise-certificate-proxy 0.3.2 gcloud-crc32c 1.0.0Tạo mã làm mới OAuth 2.0 bằng cách chạy công cụ gcloud CLI với tệp
credentials.jsonở bước trước. Bạn phải truyền--client-id-fileđể mã làm mới được phát hành trong dự án Google API Console của bạn thay vì dự án mặc định của gcloud CLI:gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=PATH_TO_CREDENTIALS_JSONLệnh
gcloudsẽ mở cửa sổ đăng nhập Tài khoản Google trong một cửa sổ trình duyệt mới và hướng dẫn bạn các bước xác thực OAuth 2.0. Hãy nhớ đăng nhập bằng tài khoản người dùng mà bạn đã chọn ở các bước trước. Nếu ứng dụng của bạn chưa được xác minh, bạn có thể thấy một màn hình cảnh báo. Trong những trường hợp như vậy, bạn có thể nhấp vào đường liên kết Nâng cao rồi nhấp vào lựa chọn Truy cập vào PROJECT_NAME (không an toàn).Sau khi bạn xác minh các phạm vi, hãy nhấp vào nút Tiếp tục để cấp quyền. Trình duyệt chuyển đến
https://cloud.google.com/sdk/auth_success, cho biết quá trình xác thực đã thành công. Trang này sẽ hiển thị thông báo sau:Authorization code granted. Close this tab.Lệnh
gcloudsẽ in thông báo sau:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Mở tệp
application_default_credentials.json. Nội dung của tệp này tương tự như sau:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Cấu hình thư viện ứng dụng
Chọn thẻ tương ứng với ngôn ngữ lập trình của bạn để xem hướng dẫn về cách định cấu hình thư viện ứng dụng. Nếu người dùng được uỷ quyền truy cập vào tài khoản khách hàng thông qua tài khoản người quản lý Google Ads (MCC), hãy đặt login-customer-id (hoặc loginCustomerId) thành mã khách hàng gồm 10 chữ số của tài khoản người quản lý đó mà không có dấu gạch ngang.
Java
Định cấu hình các khoá sau trong tệp ads.properties.
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
.NET
Đặt thông tin đăng nhập OAuth 2.0 trên phiên bản GoogleAdsConfig và sử dụng thông tin này để khởi động đối tượng GoogleAdsClient.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
Python
Định cấu hình các khoá sau trong tệp google-ads.yaml.
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
PHP
Định cấu hình các khoá sau trong google_ads_php.ini.
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
Ruby
Định cấu hình các khoá sau trong tệp google_ads_config.rb.
Google::Ads::GoogleAds::Config.new do |c|
c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
Perl
Định cấu hình các khoá sau trong tệp googleads.properties.
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Hãy xem hướng dẫn định cấu hình để biết thêm các lựa chọn.
curl
Bắt đầu bằng cách sử dụng một ứng dụng HTTP để tìm nạp mã truy cập OAuth 2.0. Hướng dẫn này sử dụng lệnh curl.
curl \
--data "grant_type=refresh_token" \
--data "client_id=CLIENT_ID" \
--data "client_secret=CLIENT_SECRET" \
--data "refresh_token=REFRESH_TOKEN" \
https://oauth2.googleapis.com/tokenBạn có thể sử dụng mã truy cập trong các lệnh gọi API. Ví dụ sau đây cho thấy cách chạy báo cáo chiến dịch bằng phương thức GoogleAdsService.SearchStream để truy xuất các chiến dịch trong tài khoản của bạn. Hướng dẫn này không đề cập đến thông tin chi tiết về báo cáo.
curl -i -X POST \
https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"Nội dung của query.json như sau:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}