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 menggunakan 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, tempat pengguna menambahkan akun layanan ke akun Google Ads -nya. Aplikasi kemudian 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 kode berikut 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 key-value pair 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 ditetapkan, library akan otomatis memberi otorisasi menggunakan alur akun layanan.
Lihat panduan alur kerja akun layanan untuk mempelajari lebih lanjut.
Alur autentikasi satu pengguna
Alur kerja ini dapat digunakan jika Anda tidak dapat menggunakan akun layanan. Alur kerja ini memerlukan dua langkah konfigurasi:
Beri 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 contoh kode
generate_user_credentialsuntuk memberi otorisasi 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
google-ads.yamlatau string 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 client secret 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
google-ads.yamlatau string 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 key-value pair 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 satu pengguna untuk mempelajari lebih lanjut.
Alur autentikasi multi-pengguna
Ini adalah alur kerja yang direkomendasikan jika aplikasi Anda memungkinkan pengguna login dan memberi otorisasi aplikasi Anda untuk mengelola akun Google Ads mereka atas nama mereka. Aplikasi Anda membuat 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 penyimpanan data:
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 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 di akun pengelola Google Ads. - Contoh kode
list_accessible_customersmenunjukkan cara mengambil daftar semua akun yang memiliki akses langsung ke pengguna. Akun ini kemudian dapat digunakan sebagai nilai yang valid untuk setelanlogin_customer_id.