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 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 hizmet hesabı eklediği bir yapılandırma adımı gerektirir. Uygulama daha sonra hizmet hesabının kimlik bilgilerini kullanarak kullanıcının Google Ads hesabını yönetebilir. 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 yetkilendirme kullanılıyorsa 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ının erişmesini sağlayın. Genel bir yaklaşım, kullanıcıya bir Google Ads API yönetici hesabına erişim izni 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 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 şekilde 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ı 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 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ı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 vermesi durumunda 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şlemde, uygulamanızın kimlik bilgilerini yetkilendirme akışı yürüterek veya bir veri deposundan yükleyerek çalışma zamanında aldığı varsayılır:
dict, çalışma zamanında kimlik bilgileri alınırken kullanılan 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ışı rehberine bakın.
Manuel kimlik doğrulama
Herhangi bir yaklaşımla kimlik doğrulama kimlik bilgileri oluşturabilir ve bunları istemci sınıfını doğrudan başlatarak GoogleAdsClient 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ğ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ş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.