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 quản lý người dùng và cấp quyền 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 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 cho phép ứng dụng 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ả cá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 ví dụ về mã GenerateUserCredential code example 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 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ý khi so sánh với nỗ lực để lấy 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ụ:

  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 ứng dụng khách OAuth 2.0 trong Google Cloud Console. Việc 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. 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, bạn sẽ tránh được rủi ro này.
  3. 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ọ để phòng tránh việc Tài khoản Google của họ bị xâm phạm do bảo mật kém, phần mềm độc hại hoặc lừa đảo. Tài khoản dịch vụ không bắt buộc phải bật khoá truy cập 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. Đị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/adwords làm phạm vi OAuth 2.0. Hãy xem bài viết Thiết lập màn hình xin phép bằng OAuth để biết thông tin chi tiết.

  2. 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 này 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ả 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 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 đó.

  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ụ này 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 sẽ tương tự 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
    
  5. Tạ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 từ bước trước. Bạn phải truyền --client-id-file để mã làm mới được cấp trong dự án Google API Console chứ không phải 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_JSON
  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 các bước xác thực OAuth 2.0. Hãy nhớ đăng nhập với tư cách 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àn hình cảnh báo. Trong trường hợp đó, bạn có thể nhấp vào đường liên kết Nâng cao rồi nhấp vào tuỳ chọn Chuyển đến PROJECT_NAME (không an toàn).

  7. Sau khi 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 sẽ 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 gcloud sẽ 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 sẽ tương tự như sau:

    {
      "account": "",
      "client_id": "******.apps.googleusercontent.com",
      "client_secret": "******",
      "refresh_token": "******",
      "type": "authorized_user",
      "universe_domain": "googleapis.com"
    }
    

Định 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, 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 tuỳ chọn.

.NET

Đặt thông tin xác thực OAuth 2.0 trên thực thể GoogleAdsConfig và sử dụng thực thể đó để 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 tuỳ 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 tuỳ 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 tuỳ 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 tuỳ 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 tuỳ chọn.

curl

Bắt đầu bằng cách sử dụng 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/token

Bạn có thể sử dụng mã truy cập trong các lệnh gọi API. Ví dụ sau đây cho biết 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"
}