Авторизация запросов

Каждый запрос, который ваше приложение отправляет в API Producer Center, должен включать токен авторизации. Токен также идентифицирует ваше приложение для Google.

О протоколах авторизации

Ваше приложение должно использовать OAuth 2.0 для авторизации запросов. Никакие другие протоколы авторизации не поддерживаются. Если ваше приложение использует «Войти через Google» , некоторые аспекты авторизации выполняются за вас.

Авторизация запросов с помощью OAuth 2.0

Все запросы к API-интерфейсу Producer Center должны быть авторизованы авторизованным пользователем.

Детали процесса авторизации или «потока» для OAuth 2.0 несколько различаются в зависимости от того, какое приложение вы пишете. Следующий общий процесс применим ко всем типам приложений:

  1. Когда вы создаете свое приложение, вы регистрируете его с помощью консоли Google API . Затем Google предоставляет информацию, которая понадобится вам позже, например идентификатор клиента и секрет клиента.
  2. Активируйте API Producer Center в консоли Google API. (Если API не указан в консоли API, пропустите этот шаг.)
  3. Когда вашему приложению требуется доступ к пользовательским данным, оно запрашивает у Google определенный объем доступа.
  4. Google отображает пользователю экран согласия , прося его разрешить вашему приложению запрашивать некоторые его данные.
  5. Если пользователь одобряет, Google предоставляет вашему приложению кратковременный токен доступа .
  6. Ваше приложение запрашивает пользовательские данные, прикрепляя к запросу токен доступа.
  7. Если Google определит, что ваш запрос и токен действительны, он вернет запрошенные данные.

Некоторые потоки включают дополнительные шаги, например использование токенов обновления для получения новых токенов доступа. Подробную информацию о потоках для различных типов приложений см. в документации Google OAuth 2.0 .

Ниже представлена ​​информация об области действия OAuth 2.0 для API-интерфейса Producer Center:

Объем Значение
https://www.googleapis.com/auth/manufacturercenter Доступ для чтения/записи.

Чтобы запросить доступ с помощью OAuth 2.0, вашему приложению необходима информация об области действия, а также информация, которую Google предоставляет при регистрации вашего приложения (например, идентификатор клиента и секрет клиента).

Совет: Клиентские библиотеки API Google могут выполнить за вас часть процесса авторизации. Они доступны для различных языков программирования; проверьте страницу с библиотеками и образцами для получения более подробной информации.

Пример авторизации

Следующий код демонстрирует, как настроить клиент и авторизовать запросы с использованием OAuth 2.0 для установленных приложений. Другие языки доступны на нашей странице «Образцы и библиотеки» .

Ява

Это поток кода авторизации командной строки, описанный в разделе Использование OAuth 2.0 для установленных приложений.

Пример фрагмента кода Java-кода 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.");
   
}