Cómo autorizar solicitudes

Todas las solicitudes que envíe la aplicación a la API de Manufacturer Center deben incluir un token de autorización. El token también identifica tu aplicación ante Google.

Acerca de los protocolos de autorización

Tu aplicación debe usar OAuth 2.0 para autorizar solicitudes. No se admiten otros protocolos de autorización. Si tu aplicación usa Acceder con Google, tú controlarás algunos aspectos de la autorización.

Solicitudes de autorización con OAuth 2.0

Todas las solicitudes a la API de Manufacturer Center deben estar autorizadas por un usuario autenticado.

Los detalles del proceso de autorización, o "flujo", para OAuth 2.0 varían de alguna manera según el tipo de aplicación que estás escribiendo. El siguiente proceso general se aplica a todos los tipos de aplicación:

  1. Cuando crees tu aplicación, deberás registrarla con Google API Console. Luego, Google proporcionará la información que necesites más tarde, como el ID y un secreto del cliente.
  2. Active la API de Manufacturer Center en la Consola de API de Google. Si no aparece en la consola de API, omite este paso.
  3. Cuando la aplicación necesite acceder a datos del usuario, solicita a Google un alcance de acceso en particular.
  4. Google mostrará una pantalla de consentimiento al usuario, en la que le pedirá que permita a la aplicación solicitar algunos de sus datos.
  5. Si el usuario la aprueba, Google le otorgará a la aplicación un token de acceso de corta duración.
  6. La aplicación solicitará los datos del usuario y adjuntará el token de acceso a la solicitud.
  7. Si Google determina que la solicitud y el token son válidos, mostrará los datos solicitados.

Algunos flujos requieren pasos adicionales, como el uso de tokens de actualización, para adquirir nuevos tokens de acceso. Si deseas obtener información detallada sobre los flujos para varios tipos de aplicaciones, consulta la documentación de OAuth 2.0 de Google.

Esta es la información sobre el alcance de OAuth 2.0 para la API de Manufacturer Center:

Alcance Significado
https://www.googleapis.com/auth/manufacturercenter Acceso de lectura/escritura

Para solicitar acceso con OAuth 2.0, tu aplicación necesita los datos del alcance, además de la información que Google proporciona cuando registras la aplicación (como el ID y el secreto del cliente).

Sugerencia: Las bibliotecas cliente de las API de Google pueden controlar algunos de los procesos de autorización por ti. Están disponibles para una variedad de lenguajes de programación. Si quieres obtener más detalles, consulta la página que incluye bibliotecas y ejemplos.

Ejemplo de autorización

El siguiente código muestra cómo configurar el cliente y autorizar las solicitudes mediante OAuth 2.0 para las aplicaciones instaladas. En la página Muestras y bibliotecas, encontrarás otros lenguajes disponibles.

Java

Este es el flujo de código de autorización de la línea de comandos que se describe en Usa OAuth 2.0 para aplicaciones instaladas.

Fragmento de ejemplo de nuestro código de muestra de Java de Content API:

    public static void main(String[] args) {
      try {
        httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
        jsonFactory = JacksonFactory.getDefaultInstance();
        scopes =  "https://www.googleapis.com/auth/manufacturercenter";

        // load configuration
        File configPath = new File(basePath, "manufacturers");
        File configFile = new File(configPath, manufacturers-info.json);
        ManufacturersConfig config = new JacksonFactory().fromInputStream(inputStream, ManufacturersConfig.class);
        config.setPath(configPath);

        // Get authorization token
        Credential credential = authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes);
        // ...
      }
    }

    private static Credential authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes) throws Exception {
      try {
        Credential credential = GoogleCredential.getApplicationDefault().createScoped(scopes);
        System.out.println("Loaded the Application Default Credentials.");
        return credential;
      } catch (IOException e) {
        // No need to do anything, we'll fall back on other credentials.
      }
      if (config.getPath() == null) {
        throw new IllegalArgumentException(
            "Must use Application Default Credentials with no configuration directory.");
      }
      File clientSecretsFile = new File(config.getPath(), "client-secrets.json");
      if (clientSecretsFile.exists()) {
        System.out.println("Loading OAuth2 client credentials.");
        try (InputStream inputStream = new FileInputStream(clientSecretsFile)) {
          GoogleClientSecrets clientSecrets =
              GoogleClientSecrets.load(jsonFactory, new InputStreamReader(inputStream));
          // set up authorization code flow
          GoogleAuthorizationCodeFlow flow =
              new GoogleAuthorizationCodeFlow.Builder(
                      httpTransport, jsonFactory, clientSecrets, scopes)
                  .setDataStoreFactory(dataStoreFactory)
                  .build();
          // authorize
          String userID = ConfigDataStoreFactory.UNUSED_ID;
          Credential storedCredential = flow.loadCredential(userID);
          if (storedCredential != null) {
            System.out.printf("Retrieved stored credential for %s from cache.%n", userID);
            return storedCredential;
          }
          LocalServerReceiver receiver =
              new LocalServerReceiver.Builder().setHost("localhost").setPort(9999).build();
          Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize(userID);
          System.out.printf("Retrieved credential for %s from web.%n", userID);
          return credential;
        } catch (IOException e) {
          throw new IOException(
              "Could not retrieve OAuth2 client credentials from the file "

                                    +   clientSecretsFile.getCanonicalPath());
        }
      }
      throw new IOException(
          "No authentication credentials found. Checked the Google Application"
                            +   "Default Credentials and the paths "
                            +   clientSecretsFile.getCanonicalPath()
                            +   ". Please read the accompanying README.");
    }