Seperti Google API lainnya, Google Ads API menggunakan protokol OAuth 2.0 untuk autentikasi dan otorisasi. OAuth 2.0 memungkinkan aplikasi klien Google Ads API Anda mengakses akun Google Ads pengguna tanpa harus menangani atau menyimpan info login pengguna.
Memahami Model Akses Google Ads
Untuk bekerja secara efektif dengan Google Ads API, Anda harus memahami cara kerja model akses Google Ads. Sebaiknya baca panduan model akses Google Ads.
Alur kerja OAuth
Ada tiga alur kerja umum yang digunakan saat bekerja dengan Google Ads API.
Alur akun layanan
Ini adalah alur kerja yang direkomendasikan jika alur kerja Anda tidak memerlukan interaksi manusia. Alur kerja ini memerlukan langkah konfigurasi, di mana pengguna menambahkan akun layanan ke akun Google Ads mereka. Kemudian, aplikasi dapat menggunakan kredensial akun layanan untuk mengelola akun Google Ads pengguna. Library Python dikonfigurasi sebagai berikut:
Jika menggunakan file
google-ads.yamlatau string YAML, tambahkan berikut ini ke konfigurasi Anda untuk menetapkan jalur ke file JSON kunci pribadi di lingkungan lokal Anda:json_key_file_path: JSON_KEY_FILE_PATHKemudian panggil metode
load_from_storageatauload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Jika Anda menggunakan
dictuntuk mengonfigurasi library, sertakan pasangan nilai kunci berikut dan panggil metodeload_from_dict, dengan meneruskandictkonfigurasi:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH # ... } client = GoogleAdsClient.load_from_dict(configuration)Jika Anda menggunakan variabel lingkungan, tambahkan kode berikut ke konfigurasi atau lingkungan
bashAnda:export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATHKemudian panggil metode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env() ```
Jika opsi konfigurasi json_key_file_path ada di salah satu metode konfigurasi ini, dan opsi use_application_default_credentials adalah False atau tidak disetel, library akan otomatis memberikan otorisasi menggunakan alur akun layanan.
Lihat panduan alur kerja akun layanan untuk mempelajari lebih lanjut.
Alur autentikasi pengguna tunggal
Alur kerja ini dapat digunakan jika Anda tidak dapat menggunakan akun layanan. Alur kerja ini memerlukan dua langkah konfigurasi:
Memberi satu pengguna akses ke semua akun yang akan dikelola menggunakan Google Ads API. Pendekatan umum adalah memberikan akses pengguna ke akun pengelola Google Ads API, dan menautkan semua akun Google Ads di akun pengelola tersebut.
Pengguna menjalankan alat seperti gcloud CLI atau
generate_user_credentialscontoh kode untuk mengizinkan aplikasi Anda mengelola semua akun Google Ads mereka atas nama mereka.
Library dapat diinisialisasi menggunakan kredensial OAuth 2.0 pengguna sebagai berikut:
Jika menggunakan alat gcloud CLI (Direkomendasikan)
Ikuti dokumentasi Membuat kredensial untuk menyiapkan kredensial default aplikasi (ADC) di lingkungan lokal Anda.
Tambahkan konfigurasi berikut ke string
google-ads.yamlatau YAML Anda:use_application_default_credentials: trueKemudian panggil metode
load_from_storageatauload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Jika Anda menggunakan
dictuntuk mengonfigurasi library, sertakan key-value pair berikut dan panggil metodeload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_account_default_credentials": True # ... } client = GoogleAdsClient.load_from_dict(configuration)Jika Anda menggunakan variabel lingkungan, tambahkan kode berikut ke konfigurasi atau lingkungan
bashAnda:export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=trueKemudian panggil metode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Jika menangani token OAuth secara langsung
Ikuti langkah-langkah untuk menyiapkan project konsol dan mendownload file JSON yang menyertakan client ID dan secret klien project Anda.
Clone library klien Python ke mesin Anda dan ubah ke direktorinya:
$ git clone https://github.com/googleads/google-ads-python.git $ cd google-ads-pythonJalankan contoh, dengan memberikan jalur absolut ke file JSON yang didownload pada langkah 1:
$ python examples/authentication/generate_user_credentials.py -c PATH_TO_CREDENTIALS_JSONSetelah selesai, token refresh akan dicetak ke konsol Anda. Salin dan simpan untuk langkah berikutnya.
Konfigurasi library dengan menambahkan setelan berikut ke konfigurasi pilihan Anda:
Tambahkan konfigurasi berikut ke string
google-ads.yamlatau YAML Anda:client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HEREKemudian panggil metode
load_from_storageatauload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Jika Anda menggunakan
dictuntuk mengonfigurasi library, sertakan pasangan nilai kunci berikut dan panggil metodeload_from_dict:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "client_id": INSERT_OAUTH2_CLIENT_ID_HERE "client_secret": INSERT_OAUTH2_CLIENT_SECRET_HERE "refresh_token": INSERT_REFRESH_TOKEN_HERE # ... } client = GoogleAdsClient.load_from_dict(configuration)Jika Anda menggunakan variabel lingkungan, tambahkan kode berikut ke konfigurasi atau lingkungan
bashAnda:export GOOGLE_ADS_CLIENT_ID=INSERT_OAUTH2_CLIENT_ID_HERE export GOOGLE_ADS_CLIENT_SECRET=INSERT_OAUTH2_CLIENT_SECRET_HERE export GOOGLE_ADS_REFRESH_TOKEN=INSERT_REFRESH_TOKEN_HEREKemudian panggil metode
load_from_env:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Lihat panduan alur kerja autentikasi pengguna tunggal untuk mempelajari lebih lanjut.
Alur autentikasi multi-pengguna
Alur kerja ini direkomendasikan jika aplikasi Anda memungkinkan pengguna login dan mengizinkan aplikasi Anda mengelola akun Google Ads mereka atas nama mereka. Aplikasi Anda membangun dan mengelola kredensial pengguna OAuth 2.0. Library dapat diinisialisasi menggunakan kredensial pengguna sebagai berikut, yang mengasumsikan bahwa aplikasi Anda mendapatkan kredensial saat runtime, baik dengan menjalankan alur otorisasi atau dengan memuatnya dari datastore:
dict adalah mekanisme konfigurasi paling sederhana yang dapat digunakan saat mendapatkan
kredensial saat runtime:
from google.ads.googleads.client import GoogleAdsClient
configuration = {
# ...
"client_id": client_id
"client_secret": client_secret
"refresh_token": refresh_token
# ...
}
client = GoogleAdsClient.load_from_dict(configuration)
Lihat panduan alur kerja autentikasi multi-pengguna untuk mempelajari lebih lanjut.
Autentikasi manual
Anda dapat membuat kredensial autentikasi dengan pendekatan apa pun dan memberikannya ke
GoogleAdsClient secara manual dengan membuat instance class klien secara langsung. Dengan asumsi
objek kredensial yang Anda buat adalah instance dari
google.auth.credentials.Credentials, Anda dapat meneruskannya sebagai berikut:
from google.ads.googleads.client import GoogleAdsClient
from google.auth import default
# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`
credentials = default(scopes=["https://www.googleapis.com/auth/adwords"])
client = GoogleAdsClient(
credentials=credentials,
# ... insert remaining parameters
)
Bagaimana jika pengguna saya mengelola beberapa akun?
Pengguna biasanya mengelola lebih dari satu akun Google Ads, baik melalui akses langsung ke akun, atau melalui akun pengelola Google Ads. Library klien Python menyediakan contoh kode berikut yang menggambarkan cara menangani kasus tersebut.
- Contoh kode
get_account_hierarchymenunjukkan cara mengambil daftar semua akun dalam akun pengelola Google Ads. - Contoh
kode
list_accessible_customersmenunjukkan cara mengambil daftar semua akun yang akses langsungnya dimiliki pengguna. Akun ini kemudian dapat digunakan sebagai nilai yang valid untuk setelanlogin_customer_id.