Tek Kullanıcılı Kimlik Doğrulama İş Akışı

Hizmet hesabı iş akışına benzer şekilde, tek kullanıcılı kimlik doğrulama akışı, uygulamaya gerekli tüm hesaplara erişim izni vermek için Google Ads kullanıcı arayüzünün sunduğu yetkilendirme ve kullanıcı yönetimi özelliklerinden yararlanır. Bu kimlik doğrulama iş akışı iki adımdan oluşur:

  • Uygulama tarafından yönetilmesi gereken tüm Google Ads hesaplarına tek bir kullanıcının erişmesine izin verirsiniz.
  • Kullanıcı, uygulamanızın kendi adına Google Ads hesaplarını yönetmesine yetki verir. Böylece uygulamaya tüm Google Ads hesaplarına erişim izni verilir.

Yalnızca bir kullanıcı söz konusu olduğundan kendi OAuth 2.0 kullanıcı kimlik doğrulama akışınızı oluşturmak yerine gcloud CLI veya GenerateUserCredential kod örneği gibi araçları kullanabilirsiniz.

Bu iş akışıyla ilgili bir kullanım alanı da hesaplarınıza birkaç kullanıcı girişiyle (ör.3-4 kullanıcı) erişilebildiği durumlardır. Bu durumda, OAuth kullanıcı kimlik doğrulama iş akışının tam sürümünü oluşturmak için harcanan geliştirme çabası, gcloud CLI gibi bir komut satırı aracı kullanarak 3-4 kullanıcı için yetkilendirme alma çabasıyla karşılaştırıldığında haklı gösterilemez.

Dezavantajları

Bu akışın hizmet hesabı iş akışına kıyasla birkaç dezavantajı vardır:

  1. Kullanıcı kimlik doğrulama iş akışı için Google Cloud Console'da bir OAuth 2.0 istemci kimliği ve gizli anahtar oluşturmanız gerekir. Bu da hizmet hesabı ve anahtar oluşturmaktan daha fazla yapılandırma adımı gerektirir.
  2. Uygulamanızın ek bir Google Cloud uygulama doğrulama sürecinden geçmesi gerekebilir.
  3. Yetkili kullanıcı ekipten veya şirketten ayrılırsa, kullanıcıyı hesaplarınızdan kaldırmanız ya da kullanıcı hesabını devre dışı bırakmanız durumunda uygulamanız çalışmayı durdurabilir. Hizmet hesapları ayrı ayrı kullanıcılarla ilişkilendirilmediğinden bu risk önlenir.
  4. Google Ads hesabını yetkilendiren kullanıcı, Google Hesabı'nın zayıf güvenlik, kötü amaçlı yazılım veya kimlik avı nedeniyle saldırıya uğramasını önlemek için 2 öğeli kimlik doğrulamayı etkinleştirme gibi ek önlemler almalıdır. Bu saldırı modlarının bazıları doğrudan hizmet hesapları için geçerli olmadığından hizmet hesapları bu soruna karşı daha az savunmasızdır.

Kimlik bilgisi oluşturma

  1. Uygulamanız için bir OAuth kullanıcı rızası ekranı yapılandırmak ve https://www.googleapis.com/auth/adwords'ı OAuth 2.0 kapsamı olarak eklemek üzere talimatları uygulayın.

  2. Talimatları uygulayarak bir istemci kimliği ve istemci gizli anahtarı oluşturun. OAuth 2.0 istemcisini oluşturduktan sonra, önce istemcinin OAuth istemcisini indir simgesini, ardından sonraki ekranda JSON'u İNDİR düğmesini tıklayarak istemcinin JSON dosyasını indirin. Dosyayı credentials.json olarak kaydedin.

  3. Uygulamanızı kullanarak yönetmek istediğiniz tüm Google Ads hesaplarına erişimi olan bir kullanıcı hesabı belirleyin. Eksik erişimi olan hesaplar varsa gerekli erişimi vermek için talimatları uygulayın.

  4. gcloud CLI'yı indirip yükleyin. Yüklendikten sonra, komut satırı isteminden gcloud version komutunu çalıştırarak aracın doğru çalıştığını doğrulayın. Çıkış aşağıdaki gibi görünebilir.

    :~$ gcloud version
    Google Cloud SDK 492.0.0
    alpha 2024.09.06
    beta 2024.09.06
    bq 2.1.8
    bundled-python3-unix 3.11.9
    core 2024.09.06
    enterprise-certificate-proxy 0.3.2
    gcloud-crc32c 1.0.0
    gsutil 5.30
  5. gcloud CLI aracını çalıştırarak OAuth 2.0 yenileme jetonu oluşturun:

    gcloud auth application-default 
    login --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform
    --client-id-file=<path_to_credentials.json>

    credentials.json dosyası önceki adımdan alınmıştır.

  6. gcloud komutu, yeni bir tarayıcı penceresinde Google Hesabı oturum açma penceresini açar ve sizi OAuth 2.0 kimlik doğrulama adımları boyunca yönlendirir. Önceki adımlarda seçtiğiniz kullanıcı olarak oturum açtığınızdan emin olun. Uygulamanız doğrulanmamışsa uyarı ekranı görebilirsiniz. Bu gibi durumlarda Gelişmişi Göster bağlantısını ve PROJECT_NAME (doğrulanmamış) seçeneğine git'i tıklayabilirsiniz.

  7. Kapsamları doğruladıktan sonra Devam düğmesini tıklayarak izni verin. Tarayıcı, kimlik doğrulamanın başarılı olduğunu belirten https://cloud.google.com/sdk/auth_success adresine gider. Sayfada şu mesaj gösterilir:

    Authorization code granted. Close this tab.

    gcloud komutu aşağıdaki mesajı yazdırır:

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]

    Şimdi application_default_credentials.json dosyasını açın. İçeriği aşağıdaki gibi olmalıdır:

    {
    "account": "",
    "client_id": "******.apps.googleusercontent.com",
    "client_secret": "******",
    "refresh_token": "******",
    "type": "authorized_user",
    "universe_domain": "googleapis.com"
    }
    

İstemci kitaplığı yapılandırması

İstemci kitaplığınızı yapılandırma talimatları için programlama dilinize karşılık gelen sekmeyi seçin.

Java

ads.properties dosyanızda aşağıdaki anahtarları yapılandırın.

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

Ek seçenekler için yapılandırma kılavuzuna bakın.

.NET

API çağrıları yaptığınız kullanıcının hesaplarından aldığınız kimlik bilgilerini kullanarak GoogleAdsClient örneğinizi çalışma zamanında başlatabilirsiniz.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

Ek seçenekler için yapılandırma kılavuzuna bakın.

Python

google-ads.yaml dosyanızda aşağıdaki anahtarları yapılandırın.

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE

Ek seçenekler için yapılandırma kılavuzuna bakın.

PHP

google_ads_php.ini cihazınızda aşağıdaki anahtarları yapılandırın.

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"

Ek seçenekler için yapılandırma kılavuzuna bakın.

Ruby

google_ads_config.rb dosyanızda aşağıdaki anahtarları yapılandırın.

  Google::Ads::GoogleAds::Config.new do |c|
     c.client_id = 'INSERT_CLIENT_ID_HERE'
     c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
     c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
     c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
     c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
  end

Ek seçenekler için yapılandırma kılavuzuna bakın.

Perl

googleads.properties dosyanızda aşağıdaki anahtarları yapılandırın.

 clientId=INSERT_OAUTH2_CLIENT_ID_HERE
 clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
 refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
 loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
 

Ek seçenekler için yapılandırma kılavuzuna bakın.

curl

İlk olarak, bir HTTP istemcisi kullanarak OAuth 2.0 erişim jetonu getirin. Bu kılavuzda curl komutu kullanılmaktadır.

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://www.googleapis.com/oauth2/v3/token

Artık API çağrılarınızda erişim jetonunu kullanabilirsiniz. Aşağıdaki örnekte, hesabınızdaki kampanyaları almak için GoogleAdsService.SearchStream yöntemi kullanılarak nasıl kampanya raporu çalıştırılacağı gösterilmektedir. Bu kılavuzda raporlama ile ilgili ayrıntılar yer almaz.

curl -i -X POST https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_TOKEN" \
   -H "login-customer-id: LOGIN_CUSTOMER_ID" \
   --data-binary "@query.json"

query.json klasörünün içeriği aşağıdaki gibidir:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}