Proces uwierzytelniania wielu użytkowników

W procesie uwierzytelniania wielu użytkowników tworzysz własny proces OAuth, aby uwierzytelniać użytkowników. W dokumentacji Google Identity omówiono kilka typów aplikacji oraz konfigurację projektu w Konsoli interfejsów API Google, która jest wymagana do obsługi każdego z nich. Wszystkie te typy aplikacji są obsługiwane przez interfejs Google Ads API. Dodatkowe szczegóły techniczne, o których warto pamiętać:

  • Skonfiguruj aplikację tak, aby żądała tego zakresu OAuth 2.0:

    https://www.googleapis.com/auth/adwords
    
  • Aplikacja może wymagać wywoływania interfejsu API w imieniu użytkownika, gdy jest on offline. Typowym scenariuszem jest pobieranie danych konta offline w celu generowania raportów i przeprowadzania analiz konta. Z tego powodu zalecamy poproszenie o dostęp offline do protokołu OAuth.

  • Aby Twoja aplikacja została zweryfikowana, przejdź proces weryfikacji aplikacji OAuth.

Omówienie procesu

Wdrożenie przepływu pracy uwierzytelniania wielu użytkowników składa się z 3 głównych kroków:

  1. Przekieruj użytkowników na ekran zgody OAuth: przekieruj każdego użytkownika do punktu końcowego autoryzacji OAuth 2.0 Google, który żąda zakresu https://www.googleapis.com/auth/adwords i dostępu offline. Aby ukończyć proces autoryzacji i wygenerować token odświeżania, użytkownicy muszą uwierzytelnić się za pomocą klucza dostępu.
  2. Wymień kod autoryzacji na tokeny: gdy użytkownik udzieli uprawnień, przechwyć zwrócony kod autoryzacji i wymień go na token dostępu oraz token odświeżania.
  3. Przechowywanie tokenów i inicjowanie klienta w czasie działania: bezpiecznie przechowuj token odświeżania każdego użytkownika w magazynie danych i przekazuj dane logowania użytkownika podczas inicjowania instancji GoogleAdsClient w czasie działania.

Konfiguracja biblioteki klienta

Po autoryzowaniu użytkownika i uzyskaniu danych uwierzytelniających OAuth 2.0 możesz skonfigurować bibliotekę klienta, postępując zgodnie z instrukcjami na karcie odpowiadającej Twojemu językowi programowania.

Java

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
        .setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
        .setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the OAuth credentials which provide Google Ads account
        // access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
        .build();

Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.

.NET

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

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

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    "client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
    "client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    "use_proto_plus": True,
}

client = GoogleAdsClient.load_from_dict(credentials)

Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.

PHP

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.

Ruby

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

Dodatkowe opcje znajdziesz w przewodniku po konfiguracji.

Perl

Instancję GoogleAdsClient możesz zainicjować w czasie działania, używając danych logowania uzyskanych od użytkownika, na którego kontach wykonujesz wywołania interfejsu API.

my $api_client = Google::Ads::GoogleAds::Client->new({
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_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/token

Moż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"
}