Google Ads API, diğer Google API'leri gibi kimlik doğrulama ve yetkilendirme için OAuth 2.0 protokolünü kullanır. OAuth 2.0, Google Ads API istemci uygulamanızın, kullanıcının giriş bilgilerini işlemesi veya depolaması gerekmeden kullanıcının Google Ads hesabına erişmesini sağlar.
Google Ads erişim modelini anlama
Google Ads API ile etkili bir şekilde çalışmak için Google Ads erişim modelinin nasıl çalıştığını anlamanız gerekir. Google Ads erişim modeli kılavuzunu okumanızı öneririz.
OAuth iş akışları
Google Ads API ile çalışırken kullanılan üç yaygın iş akışı vardır.
Hizmet hesabı akışı
İş akışınızda herhangi bir kullanıcı etkileşimi gerekmiyorsa bu iş akışını kullanmanız önerilir. Bu iş akışı, kullanıcının Google Ads hesabına hizmet hesabı eklediği bir yapılandırma adımı gerektirir. Uygulama daha sonra kullanıcının Google Ads hesabını yönetmek için hizmet hesabının kimlik bilgilerini kullanabilir. Python kitaplığı aşağıdaki gibi yapılandırılır:
google-ads.yamldosyası veya YAML dizesi kullanıyorsanız yerel ortamınızda özel anahtar JSON dosyasının yolunu ayarlamak için yapılandırmanıza aşağıdakileri ekleyin:json_key_file_path: JSON_KEY_FILE_PATHArdından,
load_from_storageveyaload_from_stringyöntemlerini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Kitaplığı yapılandırmak için
dictkullanıyorsanız aşağıdaki anahtar/değer çiftini ekleyin ve yapılandırmayıdictileterekload_from_dictyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH # ... } client = GoogleAdsClient.load_from_dict(configuration)Ortam değişkenleri kullanıyorsanız
bashyapılandırmanıza veya ortamınıza aşağıdakileri ekleyin:export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATHArdından
load_from_envyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env() ```
json_key_file_path yapılandırma seçeneği bu yapılandırma yöntemlerinden herhangi birinde mevcutsa ve use_application_default_credentials seçeneği False veya ayarlanmamışsa kitaplık, hizmet hesabı akışını kullanarak otomatik olarak yetkilendirilir.
Daha fazla bilgi edinmek için hizmet hesabı iş akışı kılavuzuna bakın.
Tek kullanıcılı kimlik doğrulama akışı
Bu iş akışı, hizmet hesaplarını kullanamadığınız durumlarda kullanılabilir. Bu iş akışı için iki yapılandırma adımı gerekir:
Google Ads API kullanılarak yönetilecek tüm hesaplara tek bir kullanıcının erişmesini sağlayın. Genel bir yaklaşım, kullanıcıya bir Google Ads API yönetici hesabı vermek ve bu yönetici hesabı altındaki tüm Google Ads hesaplarını bağlamaktır.
Kullanıcı, uygulamanızın kendi adına tüm Google Ads hesaplarını yönetmesine izin vermek için gcloud CLI veya
generate_user_credentialskod örneği gibi bir araç çalıştırır.
Kitaplık, kullanıcının OAuth 2.0 kimlik bilgileri kullanılarak aşağıdaki şekilde başlatılabilir:
gcloud KSA aracını kullanıyorsanız (önerilir)
Yerel ortamınızda varsayılan uygulama kimlik bilgilerini (ADC) ayarlamak için Kimlik bilgileri oluşturma dokümanındaki talimatları uygulayın.
google-ads.yamlveya YAML dizenize aşağıdaki yapılandırmayı ekleyin:use_application_default_credentials: trueArdından
load_from_storageveyaload_from_stringyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Kitaplığı yapılandırmak için
dictkullanıyorsanız aşağıdaki anahtar/değer çiftini ekleyin veload_from_dictyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_account_default_credentials": True # ... } client = GoogleAdsClient.load_from_dict(configuration)Ortam değişkenleri kullanıyorsanız
bashyapılandırmanıza veya ortamınıza aşağıdakileri ekleyin:export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=trueArdından
load_from_envyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
OAuth jetonları doğrudan işleniyorsa
Konsol projesi oluşturma adımlarını uygulayın ve projenizin istemci kimliğini ve istemci gizli anahtarını içeren JSON dosyasını indirin.
Python istemci kitaplığını makinenize klonlayın ve dizinine gidin:
$ git clone https://github.com/googleads/google-ads-python.git $ cd google-ads-python1. adımda indirilen JSON dosyasının mutlak yolunu sağlayarak örneği yürütün:
$ python examples/authentication/generate_user_credentials.py -c PATH_TO_CREDENTIALS_JSONİşlem tamamlandığında konsolunuza bir yenileme jetonu yazdırılır. Kopyalayın ve sonraki adım için kaydedin.
Aşağıdaki ayarları tercih ettiğiniz yapılandırmaya ekleyerek kitaplığı yapılandırın:
google-ads.yamlveya YAML dizenize aşağıdaki yapılandırmayı ekleyin:client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HEREArdından
load_from_storageveyaload_from_stringyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()Kitaplığı yapılandırmak için
dictkullanıyorsanız aşağıdaki anahtar-değer çiftlerini ekleyin veload_from_dictyöntemini çağırın: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)Ortam değişkenleri kullanıyorsanız
bashyapılandırmanıza veya ortamınıza aşağıdakileri ekleyin: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_HEREArdından
load_from_envyöntemini çağırın:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
Daha fazla bilgi için tek kullanıcılı kimlik doğrulama iş akışı rehberine bakın.
Çok kullanıcılı kimlik doğrulama akışı
Uygulamanızın, kullanıcıların oturum açmasına ve Google Ads hesaplarını kendi adlarına yönetmek için uygulamanıza yetki vermesine izin veriyorsa bu iş akışını kullanmanız önerilir. Uygulamanız, OAuth 2.0 kullanıcı kimlik bilgilerini oluşturur ve yönetir. Kitaplık, kullanıcının kimlik bilgileri kullanılarak aşağıdaki şekilde başlatılabilir. Bu işlem, uygulamanızın kimlik bilgilerini yetkilendirme akışı yürüterek veya bir veri deposundan yükleyerek çalışma zamanında aldığını varsayar:
dict, çalışma zamanında kimlik bilgileri alınırken kullanılacak en basit yapılandırma mekanizmasıdır:
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)
Daha fazla bilgi edinmek için çok kullanıcılı kimlik doğrulama iş akışı kılavuzuna bakın.
Manuel kimlik doğrulama
Kimlik doğrulama kimlik bilgilerini herhangi bir yaklaşımla oluşturabilir ve istemci sınıfını doğrudan başlatarak GoogleAdsClient öğesine manuel olarak sağlayabilirsiniz. Oluşturduğunuz kimlik bilgileri nesnesinin google.auth.credentials.Credentials örneği olduğunu varsayarsak, bunu aşağıdaki gibi iletebilirsiniz:
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
)
Kullanıcım birden fazla hesap yönetiyorsa ne olur?
Kullanıcıların, hesaplara doğrudan erişerek veya bir Google Ads yönetici hesabı üzerinden birden fazla Google Ads hesabını yönetmesi yaygın bir durumdur. Python istemci kitaplığı, bu tür durumların nasıl ele alınacağını gösteren aşağıdaki kod örneklerini sağlar.
get_account_hierarchykod örneğinde, bir Google Ads yönetici hesabı altındaki tüm hesapların listesinin nasıl alınacağı gösterilmektedir.list_accessible_customerskod örneğinde, kullanıcının doğrudan erişimi olan tüm hesapların listesinin nasıl alınacağı gösterilmektedir. Bu hesaplar daha sonralogin_customer_idayarı için geçerli değerler olarak kullanılabilir.