Użyj konta usługi

Konto usługi to typ konta Google, którego aplikacja może używać aby uzyskać programowy dostęp do interfejsów API Google przy użyciu protokołu OAuth 2.0. Nie wymaga to przez człowieka, ale zamiast tego używa pliku klucza, który może być możliwy tylko przez aplikację dostęp.

Zanim przeczytasz więcej o kontach usługi, rozważ prostsze i więcej zdecydowanie zalecany proces aplikacji instalowany przez OAuth 2.0. Choć ten proces wymaga ręcznej autoryzacji aplikacji przez użytkownika, czynności można wykonać tylko raz i nie trzeba wykonywać ich w środowisku produkcyjnym. Tokeny odświeżania wygenerowane przez ten proces nigdy nie wygasają, mogą być przechowywane w pamięci podręcznej wdrażane w różnych środowiskach i mogą być używane do generowania tokenów dostępu do popytu bez interakcji ze strony użytkownika.

Nadal czytasz? OK, konta usługi możesz używać w dowolnej z tych lokalizacji sposoby:

  • Utwórz reklamę displayową Użytkownik Video 360 powiązany z kontem konta usługi. W takim przypadku konto usługi działa jak zwykle konta użytkownika i umożliwia dostęp do wszystkich partnerów i reklamodawców, w ramach obsługi administracyjnej użytkownika. Jest to preferowany sposób korzystania z usługi kont z kampaniami w sieci reklamowej Film 360.
  • używać przekazywania dostępu w całej domenie do wysyłania żądań w imieniu więcej reklam displayowych i użytkowników Video 360 połączonych z kontami w G Suite; w Twojej domenie. W takim przypadku musisz mieć dostęp administracyjny do domeny docelowej. Aby uzyskać pomoc dotyczącą G Suite lub konfiguracji domeny, zobacz Strona pomocy G Suite.

Wymagania wstępne

Aby użyć konta usługi powiązanego z kontem Display & Użytkownik usługi Video 360 wybierz DV360 user (Użytkownik w DV360) poniżej. Aby korzystać z przekazywania dostępu w całej domenie, wybierz kartę Pełnomocnicy.

Użytkownik DV360

Musisz mieć Użytkownik Video 360 został połączony z Twoim kontem usługi.

Przekazywanie

  1. Musisz mieć dostęp administracyjny do domeny zarejestrowanej w G Suite
  2. Musisz mieć co najmniej jedną reklamę displayową i Użytkownicy Video 360 połączeni z kontami w domenie zarejestrowanej w G Suite. Użytkownicy powiązani z kontami w z innych domen (np. gmail.com).

Konfigurowanie konta usługi i korzystanie z niego

Użytkownik DV360

  1. Wygeneruj klucz konta usługi w Konsola interfejsów API Google.

  2. Powiąż reklamy displayowe i Użytkownik filmu 360 z adresem e-mail konta usługi uzyskanych w poprzednim kroku zgodnie z opisem w Zarządzanie użytkownikami w sieci reklamowej i w sieci reklamowej Centrum pomocy Video 360 .

  3. Wdróż w swojej aplikacji proces OAuth 2.0 między serwerami, wykorzystując przy tym przez nowo utworzone konto usługi. Więcej informacji: przykłady.

Przekazywanie

  1. Wygeneruj klucz konta usługi w Konsola interfejsów API Google.

  2. Przekaż uprawnienia w całej domenie do tego konta usługi do: umożliwiają podszywanie się pod użytkowników w Twojej domenie. Gdy pojawi się odpowiedni komunikat, podaj tych zakresów interfejsu API:

    Zakres Znaczenie
    https://www.googleapis.com/auth/display-video Uprawnienia do odczytu/zapisu.
    https://www.googleapis.com/auth/display-video-user-management Uprawnienia do zapisu i odczytu w usłudze users. Dostępne tylko dla użytkowników kont usługi.

  3. Wdróż w swojej aplikacji proces OAuth 2.0 między serwerami, wykorzystując przy tym przez nowo utworzone konto usługi. Więcej informacji: przykłady. Pamiętaj, że musisz podać konto i musi należeć do domeny, w której działa usługa w poprzednim kroku przekazano uprawnienia w całej domenie.

Aby uzyskać pomoc dotyczącą G Suite lub konfiguracji domeny, zobacz stronie pomocy G Suite.

Przykłady

Java

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.displayvideo.v3.DisplayVideo;
import com.google.api.services.displayvideo.v3.DisplayVideoScopes;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
import java.io.FileInputStream;

/**
 * This example demonstrates how to authenticate using a service account.
 */
public class AuthenticateUsingServiceAccount {
  // Path to a JSON file containing service account credentials for this application. This file can
  // be downloaded from the Credentials tab on the Google API Console.
  private static final String PATH_TO_JSON_FILE = "ENTER_PATH_TO_CLIENT_SECRETS_HERE";

  /**
   * An optional Google account email to impersonate. Only applicable to service accounts which have
   * enabled domain-wide delegation and wish to make API requests on behalf of an account within
   * their domain. Setting this field will not allow you to impersonate a user from a domain you
   * don't own (e.g., gmail.com).
   */
  private static final String EMAIL_TO_IMPERSONATE = "";

  // The OAuth 2.0 scopes to request.
  private static final ImmutableSet OAUTH_SCOPES =
      ImmutableSet.copyOf(DisplayVideoScopes.all());

  private static Credential getServiceAccountCredential(
      String pathToJsonFile, String emailToImpersonate) throws Exception {
    // Generate a credential object from the specified JSON file.
    GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(pathToJsonFile));

    // Update the credential object with appropriate scopes and impersonation info (if applicable).
    if (Strings.isNullOrEmpty(emailToImpersonate)) {
      credential = credential.createScoped(OAUTH_SCOPES);
    } else {
      credential =
          new GoogleCredential.Builder()
              .setTransport(credential.getTransport())
              .setJsonFactory(credential.getJsonFactory())
              .setServiceAccountId(credential.getServiceAccountId())
              .setServiceAccountPrivateKey(credential.getServiceAccountPrivateKey())
              .setServiceAccountScopes(OAUTH_SCOPES)
              // Set the email of the user you are impersonating (this can be yourself).
              .setServiceAccountUser(emailToImpersonate)
              .build();
    }

    return credential;
  }

  public static void main(String[] args) throws Exception {
    // Build service account credential.
    Credential credential = getServiceAccountCredential(PATH_TO_JSON_FILE, EMAIL_TO_IMPERSONATE);

    // Create a DisplayVideo service instance.
    //
    // Note: application name below should be replaced with a value that identifies your
    // application. Suggested format is "MyCompany-ProductName/Version.MinorVersion".
    DisplayVideo service =
        new DisplayVideo.Builder(credential.getTransport(), credential.getJsonFactory(), credential)
            .setApplicationName("displayvideo-java-service-acct-sample")
            .build();

    // Make API requests.
  }
}

Python

"""This example demonstrates how to authenticate using a service account.

An optional Google account email to impersonate may be specified as follows:
    authenticate_using_service_account.py <path_to_json_file> -i <email>

This optional flag only applies to service accounts which have domain-wide
delegation enabled and wish to make API requests on behalf of an account
within that domain. Using this flag will not allow you to impersonate a
user from a domain you don't own (e.g., gmail.com).
"""

import argparse
import sys

from googleapiclient import discovery
import httplib2
from oauth2client import client
from oauth2client import tools
from oauth2client.service_account import ServiceAccountCredentials

# Declare command-line flags.
argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument(
    'path_to_service_account_json_file',
    help='Path to the service account JSON file to use for authenticating.')
argparser.add_argument(
    '-i',
    '--impersonation_email',
    help='Google account email to impersonate.')

API_NAME = 'displayvideo'
API_VERSION = 'v3'
API_SCOPES = ['https://www.googleapis.com/auth/display-video']


def main(argv):
  # Retrieve command line arguments.
  parser = argparse.ArgumentParser(
      description=__doc__,
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser, argparser])
  flags = parser.parse_args(argv[1:])

  # Authenticate using the supplied service account credentials
  http = authenticate_using_service_account(
      flags.path_to_service_account_json_file,
      flags.impersonation_email)

  # Build a service object for interacting with the API.
  service = discovery.build(API_NAME, API_VERSION, http=http)

  # Make API requests.

def authenticate_using_service_account(path_to_service_account_json_file,
                                       impersonation_email):
  """Authorizes an httplib2.Http instance using service account credentials."""
  # Load the service account credentials from the specified JSON keyfile.
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      path_to_service_account_json_file,
      scopes=API_SCOPES)

  # Configure impersonation (if applicable).
  if impersonation_email:
    credentials = credentials.create_delegated(impersonation_email)

  # Use the credentials to authorize an httplib2.Http instance.
  http = credentials.authorize(httplib2.Http())

  return http


if __name__ == '__main__':
  main(sys.argv)

PHP

/**
 * This example demonstrates how to authenticate using a service account.
 *
 * The optional flag email parameter only applies to service accounts which have
 * domain-wide delegation enabled and wish to make API requests on behalf of an
 * account within that domain. Using this flag will not allow you to impersonate
 * a user from a domain that you don't own (e.g., gmail.com).
 */
class AuthenticateUsingServiceAccount
{
    // The OAuth 2.0 scopes to request.
    private static $OAUTH_SCOPES = [Google_Service_DisplayVideo::DISPLAY_VIDEO];

    public function run($pathToJsonFile, $email = null)
    {
        // Create an authenticated client object.
        $client = $this->createAuthenticatedClient($pathToJsonFile, $email);

        // Create a Dfareporting service object.
        $service = new Google_Service_DisplayVideo($client);

        // Make API requests.
    }

    private function createAuthenticatedClient($pathToJsonFile, $email)
    {
        // Create a Google_Client instance.
        //
        // Note: application name should be replaced with a value that identifies
        // your application. Suggested format is "MyCompany-ProductName".
        $client = new Google_Client();
        $client->setApplicationName('PHP service account sample');
        $client->setScopes(self::$OAUTH_SCOPES);

        // Load the service account credentials.
        $client->setAuthConfig($pathToJsonFile);

        // Configure impersonation (if applicable).
        if (!is_null($email)) {
            $client->setSubject($email);
        }

        return $client;
    }
}