Hizmet hesabı iş akışına benzer şekilde, tek kullanıcı kimlik doğrulama akışı, uygulamanın gerekli tüm hesaplara erişmesine izin vermek için Google Ads kullanıcı arayüzü tarafından sunulan yetkilendirme ve kullanıcı yönetimi özelliklerini kullanır. Bu kimlik doğrulama iş akışının iki adımı vardır:
- Uygulama tarafından yönetilmesi gereken tüm Google Ads hesaplarına tek bir kullanıcıya erişim izni verirsiniz.
- Kullanıcı, uygulamanıza Google Ads hesaplarını kendi adına yönetme yetkisi verir. Böylece uygulama, tüm Google Ads hesaplarına erişim elde eder.
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ı, hesaplarınıza az sayıda kullanıcı girişiyle (ör. 3 ila 4 kullanıcı) erişilebilmesidir. Bu durumda, tam kapsamlı bir OAuth çok kullanıcılı kimlik doğrulama iş akışı oluşturmak için harcanacak geliştirme çabası, gcloud CLI gibi bir komut satırı aracı kullanarak 3 ila 4 kullanıcı için yetkilendirme almak için harcanacak çabayla karşılaştırıldığında haklı gösterilemez.
Dezavantajlar
Hizmet hesabı iş akışıyla karşılaştırıldığında bu akışın birkaç dezavantajı vardır:
- Kullanıcı kimlik doğrulaması iş akışı, Google API Konsolu'nda bir OAuth 2.0 istemci kimliği ve gizli anahtarı oluşturmanızı gerektirir. Bu işlem, hizmet hesabı ve anahtar oluşturmaktan daha fazla yapılandırma adımı içerir.
- Yetkili kullanıcı ekipten veya şirketten ayrılırsa ve kullanıcıyı hesaplarınızdan kaldırır ya da kullanıcı hesabını devre dışı bırakırsanız uygulamanız çalışmayı durdurabilir. Hizmet hesapları bireysel kullanıcılara bağlı olmadığından bu riskten kaçınılmış olur.
- Kötü amaçlı yazılımlar veya kimlik avı nedeniyle hesabın güvenliğinin ihlal edilmesini önlemek için Google Ads hesabını yetkilendiren kullanıcının, OAuth 2.0 yenileme jetonları oluştururken geçiş anahtarıyla kimlik doğrulaması yapması gerekir. Hizmet hesapları geçiş anahtarı gerektirmez ve kimlik avı gibi kullanıcıları hedefleyen saldırılara karşı daha az savunmasızdır.
Kimlik bilgisi oluşturun
Uygulamanız için OAuth kullanıcı rızası ekranı yapılandırın ve OAuth 2.0 kapsamı olarak
https://www.googleapis.com/auth/adwordsekleyin. Ayrıntılar için OAuth kullanıcı rızası ekranınızı ayarlama başlıklı makaleyi inceleyin.Talimatları uygulayarak istemci kimliği ve istemci gizli anahtarı oluşturun. OAuth 2.0 istemcisini oluşturduktan sonra onay iletişim kutusundaki 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 eksik olan hesaplar varsa bu kullanıcıya hesap erişimi verin. Bu kullanıcı hesabının geçiş anahtarı oluşturduğundan emin olun (Yeni oluşturulan bir geçiş anahtarının güvenilir hâle gelmesi için 7 günlük bir güvenlik gecikme süresi uygulanabilir).
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ış şuna benzer: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ımda oluşturulan
credentials.jsondosyasıyla gcloud CLI aracını çalıştırarak bir OAuth 2.0 yenileme jetonu oluşturun. Yenileme jetonunun gcloud CLI'ın varsayılan projesi yerine Google API Konsolu projeniz kapsamında verilmesi için--client-id-fileparametresini iletmeniz 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 penceresi açar ve sizi OAuth 2.0 kimlik doğrulama adımlarına yönlendirir. Önceki adımlarda seçtiğiniz kullanıcı olarak oturum açın ve geçiş anahtarı kullanarak kimliğinizi doğrulayın. Uygulamanız doğrulanmamışsa bir uyarı ekranı görebilirsiniz. Bu gibi durumlarda, Gelişmiş bağlantısını ve ardından PROJECT_NAME (güvenli değil) sitesine git 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 aşağıdaki 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ğıdakine 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ı nasıl yapılandıracağınızla ilgili 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ı üzerinden erişiyorsa login-customer-id (veya loginCustomerId) değerini, söz konusu yönetici hesabının 10 haneli müşteri kimliği olarak tire işareti 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 dosyanı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
OAuth 2.0 erişim jetonu almak için bir HTTP istemcisi kullanarak başlayın. 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 kampanya raporunun nasıl çalıştırılacağı gösterilmektedir. Bu kılavuzda raporlama ile ilgili ayrıntılar ele alınmamaktadır.
curl -i -X POST \
https://googleads.googleapis.com/v26/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 şu şekildedir:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}