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 uygulama, tüm Google Ads hesaplarına erişebilir.
Yalnızca bir kullanıcı söz konusu olduğundan kendi OAuth 2.0 kullanıcı kimlik doğrulaması iş 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 çok kullanıcılı kimlik doğrulama iş akışı 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 bazı dezavantajları vardır:
- Kullanıcı kimlik doğrulama iş akışı, Google Cloud Console'da bir OAuth 2.0 istemci kimliği ve gizli anahtarı oluşturmanızı gerektirir. Bu da hizmet hesabı ve anahtarı oluşturmaktan daha fazla yapılandırma adımı gerektirir.
- 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ı tek tek kullanıcılara bağlı olmadığından bu risk önlenir.
- Google Ads hesabını yetkilendiren kullanıcı, Google Hesabı'nın kötü güvenlik, kötü amaçlı yazılım veya kimlik avı nedeniyle güvenliğinin ihlal edilmesini önlemek için Google Hesabı'nda geçiş anahtarlarını etkinleştirmelidir. Geçiş anahtarlarını etkinleştirmek için hizmet hesapları gerekmez ve bu saldırı modlarının bazıları doğrudan hizmet hesapları için geçerli olmadığından bu soruna karşı daha az savunmasızdırlar.
Kimlik bilgisi oluşturma
Uygulamanız için OAuth kullanıcı rızası ekranı yapılandırın ve
https://www.googleapis.com/auth/adwords'ı OAuth 2.0 kapsamı olarak ekleyin. Ayrıntılar için OAuth kullanıcı rızası ekranınızı ayarlama başlıklı makaleyi inceleyin.Talimatları uygulayarak bir istemci kimliği ve istemci gizli anahtarı oluşturun. OAuth 2.0 istemcisini oluşturduktan sonra onay iletişim kutusunda JSON'ı indir düğmesini tıklayarak istemcinin JSON dosyasını indirin. Dosyayı
credentials.jsonolarak kaydedin.Uygulamanızı kullanarak yönetmek istediğiniz tüm Google Ads hesaplarına erişimi olan bir kullanıcı hesabı belirleyin. Erişimi olmayan hesaplar varsa bu kullanıcıya hesap erişimi verin.
gcloud CLI'yı indirip yükleyin. Yüklendikten sonra, komut satırı isteminden
gcloud versionkomutunu çalıştırarak aracın doğru şekilde çalıştığını doğrulayın. Çıkış şu şekilde görünür:gcloud versionGoogle 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Önceki adımdaki
credentials.jsondosyasıyla gcloud CLI aracını çalıştırarak OAuth 2.0 yenileme jetonu oluşturun. Yenileme jetonunun gcloud CLI'nın varsayılan projesi yerine Google API Konsolu projeniz altında verilmesi için--client-id-fileiletilmesi gerekir: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_JSONgcloudkomutu, yeni bir tarayıcı penceresinde Google Hesabı oturum açma penceresini açar ve sizi OAuth 2.0 kimlik doğrulama adımlarında 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ş bağlantısını ve PROJECT_NAME'ye git (güvenli değil) seçeneğini tıklayabilirsiniz.Kapsamları doğruladıktan sonra izin vermek için Devam düğmesini tıklayın. Tarayıcı, kimlik doğrulamanın başarılı olduğunu belirten
https://cloud.google.com/sdk/auth_successadresine gider. Sayfada şu mesaj gösterilir:Authorization code granted. Close this tab.gcloudkomutu aşağıdaki mesajı yazdırır:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]application_default_credentials.jsondosyasını açın. İçeriği aşağıdakilere benzer:{ "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. Yetkili kullanıcınız müşteri hesaplarına bir Google Ads yönetici hesabı (MM) üzerinden erişiyorsa login-customer-id (veya loginCustomerId) değerini, bu yönetici hesabının 10 haneli müşteri kimliğine tire olmadan ayarlayın.
Java
ads.properties dosyanızda aşağıdaki anahtarları yapılandırın.
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Ek seçenekler için yapılandırma kılavuzuna bakın.
.NET
GoogleAdsConfig örneğinde OAuth 2.0 kimlik bilgilerini ayarlayın ve GoogleAdsClient nesnesini başlatmak için kullanın.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
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_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
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_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_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
Öncelikle 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://oauth2.googleapis.com/tokenErişim jetonunu API çağrılarınızda kullanabilirsiniz. Aşağıdaki örnekte, hesabınızdaki kampanyaları almak için GoogleAdsService.SearchStream yöntemini kullanarak nasıl kampanya raporu çalıştırılacağı gösterilmektedir. Bu kılavuzda raporlama ile ilgili ayrıntılar yer almamaktadır.
curl -i -X POST \
https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"query.json dosyası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"
}