Diğer Google API'leri gibi Google Ads API de 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 işleyiş şeklini anlamanız gerekir. Google Ads erişim modeli kılavuzunu inceleyin.
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 bir hizmet hesabı eklediği bir yapılandırma adımı gerektirir. Uygulama, 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 (alan genelinde yetki kullanıyorsanız isteğe bağlıimpersonated_emailile birlikte):json_key_file_path: JSON_KEY_FILE_PATH # Optional: only set if using Google Workspace domain-wide delegation: # impersonated_email: IMPERSONATED_EMAILArdı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, use_application_default_credentials seçeneği False veya ayarlanmamışsa ve OAuth kullanıcı kimliği bilgisi anahtarları (client_id, client_secret ve refresh_token) ayarlanmamışsa veya yorum satırı olarak işaretlenmişse kitaplık, hizmet hesabı akışını kullanarak otomatik olarak yetkilendirir.
Daha fazla bilgi için Hizmet hesabı iş akışı kılavuzu'na bakın.
Tek kullanıcılı kimlik doğrulama akışı
Hizmet hesaplarını kullanamıyorsanız bu iş akışını kullanabilirsiniz. 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ıya erişim izni verin. Yaygın bir yaklaşım, kullanıcıya bir Google Ads API yönetici hesabına erişim vermek ve tüm Google Ads hesaplarını bu yönetici hesabına bağlamaktır.
Kullanıcı, uygulamanızın tüm Google Ads hesaplarını kendi adına yönetmesine yetki 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 gibi başlatılabilir:
gcloud CLI aracını kullanıyorsanız (önerilir)
Yerel ortamınızda uygulama varsayılan 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_application_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_APPLICATION_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ını doğrudan işliyorsanız
Console projesi oluşturma adımlarını uygulayın ve projenizin istemci kimliği ile 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 konsolunuzda bir yenileme jetonu gösterilir. Kopyalayın ve sonraki adım için kaydedin.
Seçtiğiniz yapılandırmaya aşağıdaki ayarları 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 edinmek için Tek kullanıcılı kimlik doğrulama iş akışı kılavuzuna bakın.
Çok kullanıcılı kimlik doğrulama akışı
Uygulamanız, kullanıcıların oturum açmasına ve uygulamanızı kendi adlarına Google Ads hesaplarını yönetmesi için yetkilendirmesine izin veriyorsa önerilen iş akışı budur. 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 örnekte, uygulamanızın kimlik bilgilerini çalışma zamanında bir yetkilendirme akışı yürüterek veya bir veri deposundan yükleyerek aldığı varsayılmaktadır:
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 dilediğiniz yöntemle oluşturabilir ve istemci sınıfını doğrudan örneklendirerek GoogleAdsClient'e 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,
use_proto_plus=True,
)
Birden çok hesabı yönetme
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ği, bir Google Ads yönetici hesabı altındaki tüm hesapların listesinin nasıl alınacağını gösterir.list_accessible_customerskod örneğinde, kullanıcının doğrudan erişebildiği 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.