Xác thực và uỷ quyền

Giống như các API khác của Google, Google Ads API 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 khách Google Ads API 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 mô hình truy cập Google Ads

Để làm việc hiệu quả với Google Ads API, hãy tìm hiểu cách hoạt động của mô hình truy cập Google Ads. Tham khảo hướng dẫn về mô hình truy cập Google Ads.

Quy trình OAuth

Có 3 quy trình phổ biến được dùng khi làm việc với Google Ads API.

Quy trình 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ỳ 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.

Sau đây là cách thiết lập OAuth2 để truy cập API bằng thông tin đăng nhập của riêng bạn với tài khoản dịch vụ trong thư viện ứng dụng Perl:

  1. Tạo thông tin đăng nhập OAuth2:

    Làm theo hướng dẫn để tạo tài khoản dịch vụ và khoá JSON tệp.

  2. Thiết lập thư viện ứng dụng:

    Đặt đường dẫn JSON của khoá riêng tư (và impersonatedEmail không bắt buộc nếu sử dụng tính năng uỷ quyền trên toàn miền của Google Workspace) trong cấu hình của bạn. Nếu bạn đang sử dụng tệp googleads.properties, hãy thêm nội dung sau:

    jsonKeyFilePath=PRIVATE_KEY_FILE_PATH
    # Optional unless using Google Workspace domain-wide delegation:
    impersonatedEmail=IMPERSONATED_EMAIL
    loginCustomerId=LOGIN_CUSTOMER_ID
    

    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 Bash:

    export GOOGLE_ADS_JSON_KEY_FILE_PATH=KEY_FILE_PATH
    export GOOGLE_ADS_IMPERSONATED_EMAIL=\
    IMPERSONATED_EMAIL
    export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID
    

    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ể sử dụng tài khoản dịch vụ. Quy trình này yêu cầu 2 bước thiết lập:

  1. 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 Google Ads API. 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ý đó.
  2. Người dùng chạy ví dụ về mã generate_user_credentials.pl để cho phép ứng dụng của bạn quản lý tất cả tài khoản Google Ads của họ thay mặt họ.

Các bước sau đây sẽ chạy một ví dụ về mã tương tác, sau đó yêu cầu bạn cung cấp thông tin đầu vào.

  1. Trong một thiết bị đầu cuối, hãy chạy generate_user_credentials.pl ví dụ trong thư mục examples. Bạn có thể sửa đổi các giá trị INSERT_XXX_HERE trong ví dụ trước khi chạy hoặc sử dụng các đối số dòng lệnh -client_id cho mã ứng dụng khách và -client_secret cho khoá bí mật của ứng dụng khách.

    perl generate_user_credentials.pl \
      -client_id OAUTH_CLIENT_ID \
      -client_secret OAUTH_CLIENT_SECRET
    
  2. Ví dụ về mã này sẽ nhắc bạn truy cập vào một URL mà bạn phải cho phép ứng dụng truy cập vào tài khoản Google Ads của bạn thay mặt bạn.

    Paste this url in your browser:
    https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline...
    

    Chuyển đến URL trong một phiên trình duyệt riêng tư hoặc cửa sổ ẩn danh. Đăng nhập bằng Tài khoản Google mà bạn dùng để truy cập vào Google Ads. Thông thường, đây là tài khoản email có quyền truy cập vào tài khoản người quản lý Google Ads chứa tất cả tài khoản bạn cần quản lý trong hệ thống phân cấp tài khoản của tài khoản người quản lý đó. Nhấp vào Tiếp tục trên màn hình xin phép bằng OAuth 2.0.

    Màn hình xin phép bằng OAuth 2.0

    Bạn sẽ được chuyển hướng đến một trang có thông báo cho biết quá trình uỷ quyền đã thành công.

    Authorization code was successfully retrieved.
    
  3. Quay lại bảng điều khiển nơi bạn đang chạy ví dụ về mã. Bạn sẽ thấy rằng ví dụ về mã đã hoàn tất và đang hiển thị mã làm mới và một số hướng dẫn, tiếp theo là các hướng dẫn bạn cần làm theo để thiết lập thư viện ứng dụng:

    Replace the following keys and values in your googleads.properties
    configuration file:
    
    clientId=***********************apps.googleusercontent.com
    clientSecret=****
    refreshToken=****
    
  4. Nhấn Ctrl + C để kết thúc quy trình. Sau đó, hãy sao chép mã làm mới đã tạo cùng với mã ứng dụng khách và khoá bí mật của ứng dụng khách vào tệp googleads.properties hoặc lưu ở nơi khác để sử dụng nếu tạo bản sao thư viện trong thời gian chạy.

Bạn có thể khởi chạy thư viện bằng thông tin đăng nhập OAuth 2.0 của người dùng bằng cách thiết lập nội dung sau trong googleads.properties:

clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID

Ngoài ra, hãy sử dụng các biến môi trường:

export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID

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à cho phép ứng dụng của bạn quản lý tài khoản Google Ads của họ thay mặt họ. Ứng dụng của bạn sẽ tạo và quản lý thông tin đăng nhập OAuth 2.0 của người dùng.

Đối với Perl, bạn thường sẽ triển khai quy trình ứng dụng web, trong đó ứng dụng của bạn xử lý việc chuyển hướng OAuth 2.0 và quản lý mã. Người dùng xác thực thông qua ứng dụng của bạn và ứng dụng của bạn lưu trữ và sử dụng mã làm mới của người dùng để thực hiện các lệnh gọi API thay mặt họ.

Cấu hình để sử dụng thông tin đăng nhập đã nhận được giống như đối với quy trình xác thực một người dùng:

clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID

Ngoài ra, hãy sử dụng các biến môi trường:

export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID

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.

Nếu người dùng của tôi quản lý nhiều tài khoản thì sao?

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 Perl cung cấp các ví dụ minh hoạ cách xử lý những trường hợp như vậy:

  1. Ví dụ get_account_hierarchy.pl cho biết cách truy xuất danh sách tất cả tài khoản trong tài khoản người quản lý Google Ads.
  2. Ví dụ list_accessible_customers.pl cho biết cách truy xuất danh sách tất cả tài khoản mà người dùng có quyền truy cập trực tiếp vào. Sau đó, bạn có thể sử dụng các tài khoản này làm giá trị hợp lệ cho chế độ cài đặt loginCustomerId trong tệp googleads.properties hoặc biến môi trường GOOGLE_ADS_LOGIN_CUSTOMER_ID.