Podobnie jak w przypadku przepustowości konta usługi, przepływ uwierzytelniania pojedynczego użytkownika korzysta z funkcji autoryzacji i zarządzania użytkownikami dostępnych w interfejsie Google Ads, aby przyznać aplikacji dostęp do wszystkich niezbędnych kont. Ten przepływ pracy uwierzytelniania składa się z 2 etapów:
- Przyznajesz jednemu użytkownikowi dostęp do wszystkich kont Google Ads , którymi ma zarządzać aplikacja.
- Użytkownik autoryzuje Twoją aplikację do zarządzania jego kontami Google Ads w jego imieniu, przyznając jej w ten sposób dostęp do wszystkich kont Google Ads.
Ponieważ jest tylko 1 użytkownik, zamiast tworzyć własny przepływ uwierzytelniania użytkownika OAuth 2.0, możesz korzystać z narzędzi takich jak gcloud CLI lub przykładowy kod GenerateUserCredential.
Powiązany przypadek użycia tego przepływu pracy występuje wtedy, gdy do Twoich kont można uzyskać dostęp za pomocą kilku loginów użytkowników (np. 3–4 użytkowników), więc nakład pracy związany z utworzeniem pełnego przepływu pracy uwierzytelniania wielu użytkowników OAuth nie jest uzasadniony w porównaniu z nakładem pracy związanym z uzyskaniem autoryzacji dla 3–4 użytkowników za pomocą narzędzia wiersza poleceń, takiego jak gcloud CLI.
Wady
W porównaniu z przepływem pracy konta usługi ten przepływ ma kilka wad:
- Przepływ pracy uwierzytelniania użytkownika wymaga utworzenia identyfikatora klienta i tajnego klucza klienta OAuth 2.0 w konsoli Google Cloud, co wymaga więcej kroków konfiguracji niż utworzenie konta usługi i klucza.
- Jeśli autoryzowany użytkownik opuści zespół lub firmę, aplikacja może przestać działać, jeśli usuniesz użytkownika z kont lub wyłączysz jego konto. Konta usługi nie są powiązane z poszczególnymi użytkownikami, więc to ryzyko jest wyeliminowane.
- Użytkownik autoryzujący konto Google Ads powinien włączyć klucze dostępu na swoim koncie Google, aby chronić je przed przejęciem z powodu słabego zabezpieczenia, złośliwego oprogramowania lub phishingu. Konta usługi nie wymagają włączenia kluczy dostępu i są mniej podatne na ten problem, ponieważ niektóre z tych metod ataku nie mają do nich bezpośredniego zastosowania.
Generowanie danych logowania
Skonfiguruj ekran zgody OAuth dla swojej aplikacji i dodaj
https://www.googleapis.com/auth/adwordsjako zakres OAuth 2.0. Więcej informacji znajdziesz w artykule Konfigurowanie ekranu zgody OAuth.Utwórz identyfikator klienta i tajny klucz klienta, postępując zgodnie z instrukcjami. Po utworzeniu klienta OAuth 2.0 pobierz plik JSON klienta, klikając przycisk Pobierz JSON w oknie potwierdzenia. Zapisz plik jako
credentials.json.Znajdź konto użytkownika, które ma dostęp do wszystkich kont Google Ads, którymi chcesz zarządzać za pomocą aplikacji. Jeśli brakuje dostępu do kont, przyznaj dostęp do konta temu użytkownikowi.
Pobierz i zainstaluj gcloud CLI. Po zainstalowaniu sprawdź, czy narzędzie działa prawidłowo, uruchamiając polecenie
gcloud versionw wierszu poleceń. Dane wyjściowe wyglądają podobnie do tych: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.0Wygeneruj token odświeżania OAuth 2.0, uruchamiając narzędzie gcloud CLI z plikiem
credentials.jsonz poprzedniego kroku. Musisz przekazać parametr--client-id-file, aby token odświeżania został wydany w projekcie Konsoli interfejsów API Google, a nie w domyślnym projekcie gcloud CLI: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_JSONPolecenie
gcloudotwiera w nowym oknie przeglądarki okno logowania na konto Google i przeprowadza Cię przez kroki uwierzytelniania OAuth 2.0. Zaloguj się jako użytkownik wybrany w poprzednich krokach. Jeśli Twoja aplikacja nie jest zweryfikowana, może się wyświetlić ekran ostrzeżenia. W takich przypadkach, możesz bezpiecznie kliknąć link Zaawansowane i opcję Przejdź do PROJECT_NAME (niebezpieczne).Po sprawdzeniu zakresów kliknij przycisk Dalej, aby przyznać uprawnienia. Przeglądarka przechodzi do adresu
https://cloud.google.com/sdk/auth_success, co oznacza, że uwierzytelnianie się powiodło. Na stronie wyświetla się ten komunikat:Authorization code granted. Close this tab.Polecenie
gcloudwyświetla ten komunikat:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Otwórz plik
application_default_credentials.json. Jego zawartość jest podobna do tej:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Konfiguracja biblioteki klienta
Aby uzyskać instrukcje konfigurowania biblioteki klienta, kliknij kartę odpowiadającą Twojemu językowi programowania. Jeśli autoryzowany użytkownik uzyskuje dostęp do kont klientów za pomocą konta menedżera Google Ads, ustaw login-customer-id (lub loginCustomerId) na 10-cyfrowy identyfikator klienta tego konta menedżera bez łączników.
Java
Skonfiguruj te klucze w pliku ads.properties.
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
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
.NET
Ustaw dane logowania OAuth 2.0 w instancji GoogleAdsConfig i użyj jej do zainicjowania obiektu GoogleAdsClient.
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);
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
Python
Skonfiguruj te klucze w pliku google-ads.yaml.
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
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
PHP
Skonfiguruj te klucze w pliku google_ads_php.ini.
[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"
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
Ruby
Skonfiguruj te klucze w pliku
google_ads_config.rb.
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
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
Perl
Skonfiguruj te klucze w pliku googleads.properties.
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.
curl
Zacznij od użycia klienta HTTP do pobrania tokena dostępu OAuth 2.0. W tym przewodniku używamy polecenia curl.
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/tokenTokena dostępu możesz używać w wywołaniach interfejsu API. Ten przykład
pokazuje, jak uruchomić raport kampanii za pomocą metody
GoogleAdsService.SearchStream, aby pobrać
kampanie na koncie. Ten przewodnik nie zawiera szczegółowych informacji o
raportowaniu.
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"Zawartość pliku query.json jest taka:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}