Podobnie jak w przypadku przepływu pracy konta usługi, proces uwierzytelniania pojedynczego użytkownika wykorzystuje funkcje autoryzacji i zarządzania użytkownikami oferowane przez interfejs Google Ads, aby przyznać aplikacji dostęp do wszystkich niezbędnych kont. Ten proces uwierzytelniania składa się z 2 etapów:
- Przyznaj pojedynczemu użytkownikowi dostęp do wszystkich kont Google Ads, którymi powinna zarządzać aplikacja.
- Użytkownik upoważnia aplikację do zarządzania jego kontami Google Ads w jego imieniu, co daje aplikacji dostęp do wszystkich kont Google Ads.
Ponieważ dotyczy to tylko jednego użytkownika, możesz polegać na narzędziach takich jak gcloud CLI lub przykładowy kod GenerateUserCredential, zamiast tworzyć własny proces uwierzytelniania użytkownika OAuth 2.0.
Podobny przypadek użycia tego przepływu pracy występuje, gdy dostęp do kont można uzyskać za pomocą kilku loginów użytkowników (np. 3–4 użytkowników). W takiej sytuacji 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:
- Proces uwierzytelniania użytkownika wymaga utworzenia identyfikatora klienta OAuth 2.0 i klucza tajnego w Konsoli interfejsów API Google, co wymaga wykonania większej liczby kroków konfiguracji niż utworzenie konta usługi i klucza.
- Jeśli upoważniony użytkownik opuści zespół lub firmę, aplikacja może przestać działać, gdy usuniesz go 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.
- Aby chronić konto przed przejęciem przez złośliwe oprogramowanie lub phishing, użytkownik autoryzujący konto Google Ads musi podczas generowania tokenów odświeżania protokołu OAuth 2.0 uwierzytelniać się za pomocą klucza dostępu. Konta usługi nie wymagają kluczy dostępu i są mniej podatne na ataki ukierunkowane na użytkowników, takie jak phishing.
Generowanie danych logowania
Skonfiguruj ekran zgody OAuth dla aplikacji i dodaj
https://www.googleapis.com/auth/adwordsjako zakres protokołu OAuth 2.0. Szczegółowe informacje znajdziesz w artykule o konfigurowaniu ekranu zgody OAuth.Utwórz identyfikator klienta i tajny klucz klienta, postępując zgodnie z instrukcjami. Po utworzeniu klienta OAuth 2.0 pobierz jego plik JSON, 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 są konta, do których nie ma dostępu, przyznaj mu dostęp do konta. Upewnij się, że na tym koncie użytkownika skonfigurowano klucz dostępu (ze względów bezpieczeństwa może wystąpić 7-dniowe opóźnienie, zanim nowo utworzony klucz dostępu stanie się zaufany).
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. Przekazanie parametru--client-id-filejest wymagane, aby token odświeżania został wydany w ramach projektu w Konsoli interfejsów API Google, a nie domyślnego projektu 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 okno logowania na konto Google w nowym oknie przeglądarki i przeprowadza Cię przez proces uwierzytelniania OAuth 2.0. Zaloguj się jako użytkownik wybrany w poprzednich krokach i potwierdź swoją tożsamość za pomocą klucza dostępu. Jeśli aplikacja jest niezweryfikowana, może pojawić się ekran z ostrzeżeniem. W takich przypadkach możesz bezpiecznie kliknąć link Zaawansowane i wybrać opcję Otwórz PROJECT_NAME (niebezpieczne).Po sprawdzeniu zakresów kliknij przycisk Dalej, aby przyznać uprawnienia. Przeglądarka przejdzie na stronę
https://cloud.google.com/sdk/auth_success, co oznacza, że uwierzytelnianie się powiodło. Na stronie pojawi 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
Wybierz kartę odpowiadającą Twojemu językowi programowania, aby dowiedzieć się, jak skonfigurować bibliotekę klienta. Jeśli upoważniony użytkownik uzyskuje dostęp do kont klientów przez konto menedżera Google Ads, ustaw parametr 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 ich 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 pobrania tokena dostępu OAuth 2.0 za pomocą klienta HTTP. 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/tokenMożesz używać tokena dostępu w wywołaniach interfejsu API. Poniższy przykład pokazuje, jak wygenerować 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:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}