Tương tự như quy trình làm việc của 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 quyền truy cập vào tất cả các tài khoản Google Ads mà ứng dụng cần quản lý.
- Người dùng uỷ quyền cho ứng dụng của bạn quản lý tài khoản Google Ads thay mặt 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 tham gia, nên bạn có thể dựa vào các công cụ như gcloud CLI hoặc mã ví dụ GenerateUserCredential thay vì xây dựng 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 có liên quan cho quy trình này là khi bạn có thể truy cập vào tài khoản của mình 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ý so với nỗ lực xin uỷ quyền cho 3 đến 4 người dùng bằng một công cụ dòng lệnh như CLI gcloud.
Điểm hạn chế
Có một vài điểm bất lợi đối với quy trình này khi so sánh với quy trình của 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 OAuth 2.0 và mật khẩu trong Google API Console. Quy trình này yêu cầu nhiều bước định cấu hình hơn so với việc tạo 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 của mình hoặc vô hiệu hoá tài khoản người dùng. Tài khoản dịch vụ không được liên kết với người dùng cá nhân, vì vậy, rủi ro này sẽ được tránh.
- Để bảo vệ tài khoản khỏi bị xâm phạm do phần mềm độc hại hoặc hành vi lừa đảo, người dùng uỷ quyền cho tài khoản Google Ads phải xác thực bằng khoá truy cập khi tạo mã làm mới OAuth 2.0. Tài khoản dịch vụ không yêu cầu khoá truy cập và ít bị tấn công có chủ đích nhắm đến người dùng hơn, chẳng hạn như tấn công giả mạo.
Tạo thông tin xác thực
Đị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 bạn 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ả cá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ó tài khoản chưa được cấp 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 đó. Đảm bảo rằng tài khoản người dùng này đã thiết lập khoá truy cập (có thể áp dụng thời gian chờ xác minh bảo mật 7 ngày trước khi khoá truy cập mới được tạo trở nên đáng tin cậy).
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ụ này hoạt động đúng cách bằng cách chạy lệnh
gcloud versiontừ lời 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 cần phải truyền tham số--client-id-fileđể mã làm mới được cấp 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à đưa bạn qua các bước xác thực OAuth 2.0. Đăng nhập bằng tài khoản người dùng mà bạn đã chọn trong các bước trước và xác minh danh tính của bạn bằng khoá truy cập. Nếu ứng dụng của bạn chưa được xác minh, bạn có thể thấy 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 Chuyển đến PROJECT_NAME (không an toàn).Sau khi bạn xác minh 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 rằng 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
gcloudin ra 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 của bạ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, 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 nối.
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 khác.
.NET
Đặt thông tin xác thực OAuth 2.0 trên thực thể GoogleAdsConfig và sử dụng thông tin đó để khởi chạy đố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 khác.
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 khác.
PHP
Định cấu hình các khoá sau trong tệp 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 khác.
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 khác.
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 khác.
curl
Bắt đầu bằng cách sử dụng một máy khách 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/v26/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"
}