Kimlik Doğrulama ve Yetkilendirme

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.yaml dosyası 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_PATH
    

    Ardından, load_from_storage veya load_from_string yöntemlerini çağırın:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    
  • Kitaplığı yapılandırmak için dict kullanıyorsanız aşağıdaki anahtar/değer çiftini ekleyin ve yapılandırmayı dict ileterek load_from_dict yö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_PATH
    

    Ardından load_from_env yö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:

  1. 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.

  2. 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_credentials kod ö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)

  1. Yerel ortamınızda varsayılan uygulama kimlik bilgilerini (ADC) ayarlamak için Kimlik bilgileri oluşturma dokümanındaki talimatları uygulayın.

  2. google-ads.yaml veya YAML dizenize aşağıdaki yapılandırmayı ekleyin:

    use_application_default_credentials: true
    

    Ardından load_from_storage veya load_from_string yöntemini çağırın:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    

    Kitaplığı yapılandırmak için dict kullanıyorsanız aşağıdaki anahtar/değer çiftini ekleyin ve load_from_dict yö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=true
    

    Ardından load_from_env yöntemini çağırın:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_env()
    

OAuth jetonları doğrudan işleniyorsa

  1. 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.

  2. Python istemci kitaplığını makinenize klonlayın ve dizinine gidin:

    $ git clone https://github.com/googleads/google-ads-python.git
    $ cd google-ads-python
    
  3. 1. 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.

  4. Aşağıdaki ayarları tercih ettiğiniz yapılandırmaya ekleyerek kitaplığı yapılandırın:

    google-ads.yaml veya 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_HERE
    

    Ardından load_from_storage veya load_from_string yöntemini çağırın:

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    

    Kitaplığı yapılandırmak için dict kullanıyorsanız aşağıdaki anahtar-değer çiftlerini ekleyin ve load_from_dict yö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_HERE
    

    Ardından load_from_env yö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.

  1. get_account_hierarchy kod örneğinde, bir Google Ads yönetici hesabı altındaki tüm hesapların listesinin nasıl alınacağı gösterilmektedir.
  2. list_accessible_customers kod ö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 sonra login_customer_id ayarı için geçerli değerler olarak kullanılabilir.