Quy trình xác thực một người dùng

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ó 2 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ọ, do đó 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ự xây dựng quy trình xác thực người dùng OAuth 2.0.

Một trường hợp sử dụng có 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-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 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 quyền uỷ quyền cho 3-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ố điểm bất lợi so với quy trình tài khoản dịch vụ:

  1. 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à mật khẩu OAuth 2.0 trong Google Cloud Console. Quy trình này đòi hỏi 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á.
  2. Ứng dụng của bạn có thể phải trải qua một quy trình xác minh Ứng dụng Google Cloud bổ sung.
  3. 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 từng người dùng, nên bạn sẽ tránh được rủi ro này.
  4. Người dùng uỷ quyền cho tài khoản Google Ads cần thực hiện các biện pháp phòng ngừa bổ sung, chẳng hạn như bật tính năng xác thực 2 yếu tố để bảo vệ Tài khoản Google của họ khỏi bị xâm nhập do bảo mật kém, phần mềm độc hại hoặc hành vi tấn công giả mạo. 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 xác thực

  1. Làm theo hướng dẫn để định cấu hình màn hình đồng ý OAuth cho ứng dụng của bạn và thêm https://www.googleapis.com/auth/adwords làm phạm vi OAuth 2.0.

  2. Tạo mã ứng dụng và khoá bí mật của ứng dụng 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 biểu tượng Tải ứng dụng OAuth xuống rồi nhấp vào nút TẢI JSON XUỐNG trên màn hình tiếp theo. Lưu tệp dưới dạng credentials.json.

  3. 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 làm theo hướng dẫn để cấp quyền truy cập cần thiết.

  4. 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 version từ dấu nhắc dòng lệnh. Kết quả đầu ra có thể như sau.

    :~$ gcloud version
    Google 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.0
    gsutil 5.30
  5. Tạo mã làm mới OAuth 2.0 bằng cách chạy công cụ 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.json>

    Tệp credentials.json là của bước trước.

  6. Lệnh gcloud sẽ mở một 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 thực hiện các bước xác thực OAuth 2.0. Đảm bảo bạn đă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 Hiển thị tuỳ chọn nâng cao rồi nhấp vào lựa chọn Chuyển đến PROJECT_NAME (chưa xác minh).

  7. 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 hiển thị thông báo sau:

    Authorization code granted. Close this tab.

    Lệnh gcloud sẽ in thông báo sau:

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]

    Bây giờ, hãy mở tệp application_default_credentials.json. Nội dung của tệp này phải 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.

Java

Định cấu hình các khoá sau trong tệp ads.properties.

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_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

Bạn có thể khởi chạy phiên bản GoogleAdsClient của mình trong thời gian chạy bằng cách sử dụng thông tin đăng nhập mà bạn đã nhận được từ người dùng có tài khoản mà bạn đang thực hiện lệnh gọi API đến.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
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_REFRESH_TOKEN_HERE
login_customer_id: 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.

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_CLIENT_ID_HERE'
     c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
     c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
     c.developer_token = 'INSERT_DEVELOPER_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://www.googleapis.com/oauth2/v3/token

Giờ đây, bạ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/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}