Kimlik doğrulama ve yetkilendirme

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.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 (alan genelinde yetki kullanıyorsanız isteğe bağlı impersonated_email ile birlikte):

    json_key_file_path: JSON_KEY_FILE_PATH
    # Optional: only set if using Google Workspace domain-wide delegation:
    # impersonated_email: IMPERSONATED_EMAIL
    

    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, 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:

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

  2. 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_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 gibi başlatılabilir:

gcloud CLI aracını kullanıyorsanız (önerilir)

  1. Yerel ortamınızda uygulama varsayılan 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_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=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ını doğrudan işliyorsanız

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

  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 konsolunuzda bir yenileme jetonu gösterilir. Kopyalayın ve sonraki adım için kaydedin.

  4. Seçtiğiniz yapılandırmaya aşağıdaki ayarları 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 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:

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