Чтобы начать использовать Ambient API, настройте свой проект, включив API в консоли Google API и настроив идентификатор клиента OAuth 2.0. Ambient API использует OAuth 2.0 для приложений телевидения и устройств с ограниченным вводом .
Ваше приложение взаимодействует с Ambient API от имени пользователя Ambient API. Пользователь авторизует эти запросы API с помощью протокола OAuth 2.0 .
Идентификатор клиента OAuth 2.0 позволяет пользователям вашего приложения входить в систему, проходить аутентификацию и, таким образом, использовать Ambient API. Ambient API не поддерживает учетные записи служб; Чтобы использовать эти API, пользователи должны войти в действующую учетную запись Google.
Настройте свое приложение
Сначала включите API, затем запросите идентификатор клиента OAuth 2.0.
Включить API
Прежде чем вы сможете использовать Ambient API, вы должны включить его в своем проекте.
- Перейдите в консоль Google API .
- В строке меню выберите проект или создайте новый проект.
- Чтобы открыть один из API Google Фото, в меню навигации выберите API и службы > Библиотека .
- Найдите «Ambient API». Выберите Ambient API и нажмите «Включить» .
Запросить идентификатор клиента OAuth 2.0
Выполните следующие действия, чтобы запросить идентификатор клиента OAuth и настроить его для своего приложения. Ambient API использует OAuth 2.0 для приложений телевидения и устройств с ограниченным вводом .
- Перейдите в консоль Google API и выберите свой проект.
- В меню выберите API и службы > Учетные данные .
На странице «Учетные данные» нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
Выберите тип приложения . В этом примере тип приложения — «Телевизоры и устройства ограниченного ввода» .
Укажите имя вашего клиента OAuth 2.0 и нажмите «Создать» .
В появившемся диалоговом окне клиента OAuth скопируйте следующее:
- Идентификатор клиента
- Секрет клиента
Ваше приложение может получить доступ к включенным API Google, используя эти значения.
Прежде чем вы сможете запустить общедоступное приложение, имеющее доступ к Ambient API, ваше приложение должно быть проверено Google. Когда вы тестируете приложение, на экране появляется сообщение «Непроверенное приложение», пока оно не будет проверено .
После того как вы настроили свое приложение, вы готовы приступить к работе. Вы можете изучить следующие ресурсы или прочитать об упрощенном процессе аутентификации для Ambient API.
Изменение идентификатора клиента
Доступ к ресурсам, созданным с помощью любого из API Google Фото, можно получить или изменить только с использованием исходного идентификатора клиента, использованного для их создания. Например, если вы создадите session в API Picker с определенным идентификатором клиента, а затем измените этот идентификатор клиента в своем приложении, ваше приложение потеряет доступ к любым ресурсам API, созданным с предыдущим идентификатором клиента.
Тщательно спланируйте и выберите правильный тип идентификатора клиента для API фотографий, который вы используете. Меняйте идентификатор клиента только в случае крайней необходимости, чтобы избежать проблем с доступом.
Оптимизированный процесс аутентификации для Ambient API
Стандартный процесс аутентификации Ambient API требует, чтобы ваши пользователи отсканировали 2 QR-кода:
- Первым войти в свою учетную запись Google (если они еще не вошли в систему).
- Второй, который ссылается на недавно созданное устройство Ambient в их учетной записи Google Photos, где они могут выбирать мультимедийные элементы для отображения.
Оптимизированный процесс позволяет предоставить пользователям один QR-код, передав дополнительный параметр state при первоначальном вызове аутентификации.
При запросе кодов устройств и пользователей в рамках OAuth для устройств с ограниченным вводом включите в запрос дополнительный параметр state . Добавьте следующее в параметр state :
| Параметры | |
|---|---|
requestId | Необходимый. Уникальный идентификатор, предоставленный клиентом для этого запроса. Это используется для предотвращения дублирования ресурсов в случае сбоя сети. Этот идентификатор должен иметь формат строки UUID (версия 4) и соответствовать следующим требованиям:
|
displayName | Необязательный. Определяемое пользователем отображаемое имя для этого устройства. Это будет видно пользователям в настройках приложения Google Photos, но редактироваться можно будет только через этот API. Допустимые отображаемые имена должны содержать от 1 до 100 символов (включительно). |
Например, см. следующий блок кода:
const response = await fetch("https://oauth2.googleapis.com/device/code", {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
client_id: config.clientId,
scope: "profile https://www.googleapis.com/auth/photosambient.mediaitems",
state: JSON.stringify({
'requestId': requestId,
'displayName': "My Device"
})
})
});
Успешный ответ будет включать в себя user_code и verification_url , которые вы показываете пользователю (скорее всего, в виде QR-кода), чтобы он мог перейти туда на отдельном устройстве. Включив параметр state , когда вы позже вызовете createDevice с помощью Ambient API, вы можете пропустить представление settingsUri во втором QR-коде, поскольку последний шаг в потоке OAuth будет автоматически перенаправляться в это место.
Для получения полной информации мы включили более подробное объяснение. Вы также можете просмотреть код в нашем примере приложения , чтобы увидеть пример использования параметра state как части OAuth для ограниченных устройств ввода с Ambient API.
Подробности об упрощенном процессе аутентификации
Чтобы полностью понять оптимизированный поток OAuth для Ambient API, необходимо понять как поток OAuth 2.0 для ТВ и приложений с ограниченным вводом данных, так и стандартный поток Ambient API. Ниже приведены шаги для каждого потока.
OAuth 2.0 для телевизоров и приложений с ограниченным вводом данных:
- Ваше приложение отправляет запрос на сервер авторизации Google, который определяет области, к которым ваше приложение будет запрашивать разрешение на доступ.
- Сервер отвечает несколькими фрагментами информации, используемыми на последующих этапах, такими как код устройства и код пользователя.
- Вы отображаете информацию, которую пользователь может ввести на отдельном устройстве для авторизации вашего приложения.
- Ваше приложение начинает опрашивать сервер авторизации Google, чтобы определить, авторизовал ли пользователь ваше приложение.
- Пользователь переключается на устройство с более широкими возможностями ввода, запускает веб-браузер, переходит по URL-адресу, отображаемому на шаге 3, и вводит код, который также отображается на шаге 3. Затем пользователь может предоставить (или запретить) доступ к вашему приложению.
- Следующий ответ на ваш запрос на опрос содержит токены, необходимые вашему приложению для авторизации запросов от имени пользователя. (Если пользователь отказал в доступе к вашему приложению, ответ не содержит токенов.)
Поток окружающего API:
- Проверьте наличие существующего токена OAuth и обновите его или запросите новый.
- После получения токена OAuth создайте новое устройство.
- Отобразите
settingsUriпользователю и начните опрашивать устройство, покаmediaSourcesSetне вернет true. - Пользователь переходит к
settingsUriи выбирает фотографии, которыми он хочет поделиться с вашим приложением. - Как только
mediaSourcesSetвернет true, получите списокmediaItems. - Теперь вы можете начать слайд-шоу или другой интересный опыт.
Оба потока включают в себя этап, на котором вы отображаете URL-адрес своему пользователю, и ваш пользователь переходит по нему на своем более богатом устройстве ввода. Включив параметр state в первоначальный вызов OAuth, вы можете избежать отображения второго URL-адреса.
Это работает, потому что последний шаг потока OAuth 2.0 для телевизоров и приложений с ограниченным вводом данных обычно перенаправляет вашего пользователя на страницу с надписью «Теперь вы можете вернуться на свое устройство». Включив параметр состояния, последний шаг потока теперь попытается перенаправить вас на settingsUri . Ваше приложение по-прежнему получит токен OAuth. Вы должны использовать этот токен для вызова createDevice с тем же requestId . После создания устройства с тем же идентификатором первоначальный поток OAuth успешно перенаправит вашего пользователя на правильную страницу на расширенном устройстве в приложении «Фотографии».
Помните следующие моменты:
- По-прежнему рекомендуется отображать
settingsUriна случай возникновения проблем с аутентификацией. - Вы по-прежнему можете использовать
settingsUriв других случаях, например, когда пользователь хочет обновить свою подборку фотографий.