Каждый запрос, отправляемый вашим приложением к API Manufacturer Center, должен включать токен авторизации. Этот токен также идентифицирует ваше приложение для Google.
О протоколах авторизации
Для авторизации запросов ваше приложение должно использовать OAuth 2.0 . Другие протоколы авторизации не поддерживаются. Если ваше приложение использует вход через Google , некоторые аспекты авторизации обрабатываются автоматически.
Авторизация запросов с использованием OAuth 2.0
Все запросы к API центра производителя должны быть авторизованы аутентифицированным пользователем.
Детали процесса авторизации, или «потока», для OAuth 2.0 несколько различаются в зависимости от типа разрабатываемого приложения. Следующий общий процесс применим ко всем типам приложений:
- При создании приложения вы регистрируете его через консоль Google API . Затем Google предоставляет информацию, которая понадобится вам позже, например, идентификатор клиента и секретный ключ клиента.
- Активируйте API Manufacturer Center в консоли Google API. (Если API не отображается в консоли API, пропустите этот шаг.)
- Когда вашему приложению требуется доступ к пользовательским данным, оно запрашивает у Google определенный объем доступа.
- Google отображает пользователю экран согласия , в котором ему предлагается разрешить вашему приложению запрашивать некоторые из его данных.
- Если пользователь одобрит запрос, Google предоставит вашему приложению кратковременный токен доступа .
- Ваше приложение запрашивает данные пользователя, прикрепляя к запросу токен доступа.
- Если Google определит, что ваш запрос и токен действительны, он вернет запрошенные данные.
Некоторые сценарии включают дополнительные шаги, например, использование токенов обновления для получения новых токенов доступа. Подробную информацию о сценариях для различных типов приложений см. в документации Google по OAuth 2.0 .
Вот информация об области действия OAuth 2.0 для API Manufacturer Center:
| Объем | Значение |
|---|---|
https://www.googleapis.com/auth/manufacturercenter | Доступ на чтение/запись. |
Для запроса доступа с использованием OAuth 2.0 вашему приложению необходима информация об области действия, а также информация, которую Google предоставляет при регистрации вашего приложения (например, идентификатор клиента и секретный ключ клиента).
Совет: Клиентские библиотеки Google API могут взять на себя часть процесса авторизации. Они доступны для различных языков программирования; подробную информацию можно найти на странице с библиотеками и примерами .
Пример авторизации
Приведенный ниже код демонстрирует, как настроить клиент и авторизовать запросы с использованием OAuth 2.0 для установленных приложений. Другие языки программирования доступны на нашей странице «Примеры и библиотеки» .
Java
Это алгоритм авторизации с использованием кода командной строки, описанный в разделе «Использование 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.");
}