Используете Actions on Google и Google Drive вместе?

Я студент-любитель, увлекающийся разработкой, работаю с Actions on Google, чтобы создать простую "текстовую приключенческую" игру на Google Home. Поскольку Google Home будет разговаривать с игроком, а не с игроком, читающим текст, я надеюсь, что это создаст впечатление, подобное ролевой игре «Dungeons and Dragons», с компьютером, работающим как «Мастер подземелий». Благодаря поддержке естественного языка, предлагаемой API.AI и Actions on Google, это казалось хорошим подходом, поскольку игрок может отвечать «естественно». Вот пример навыка Amazon Alexa, который делает то же самое, что и я. м собираюсь.

Однако каждый раз, когда я загружаю игру, это всегда новая игра. Я хотел бы сохранить сохраненную игру с предыдущим состоянием пользователя в файле JSON, размещенном на Google Диске пользователя. Поскольку я всего лишь студент, делаю это для развлечения, у меня на самом деле нет официального веб-сайта или чего-либо еще, кроме бесплатный сервер Heroku, с которого я запускаю приложение, поэтому о хранении сохранений на моем конце практически не может быть и речи.

Я прошел через краткое руководство по REST на Google Диске для Node.js , и у меня это отлично работает в консоли. Единственная проблема заключается в том, что в этом быстром запуске пользователь должен щелкнуть ссылку, чтобы разрешить приложению читать материалы в его учетной записи Google Диска, и я не уверен, как я смогу «щелкнуть ссылку» и вернуть токен доступа с помощью голоса в Google Home.

Есть ли способ сделать это через Google Диск? Или есть лучший способ обеспечить постоянные данные между сеансами? Обычно я не занимаюсь веб-разработкой, поэтому буду благодарен за любую помощь.


person Jay2645    schedule 27.01.2017    source источник


Ответы (2)


У вас есть несколько проблем, которые вам нужно решить, и хотя они кажутся связанными, они не так связаны, как вы могли бы надеяться:

  1. Вам необходимо получить авторизацию для доступа к пространству на Диске пользователя.
  2. Вам необходимо аутентифицировать Дом пользователя (чтобы вы знали, что этот человек вернулся)
  3. Вам необходимо связать эти две взаимосвязи, чтобы вы знали, какое пространство на Диске использовать для домашнего устройства, которое с вами разговаривает.

Вы уже нашли ответы на (1), и, как уже отмечалось, вам нужно будет использовать браузер, чтобы они разрешили вам доступ к их Диску. Затем вы сохраните токен обновления и сможете получить к нему доступ в будущем.

Но это только часть проблемы. Home не предоставляет вам прямой доступ к учетной записи Google пользователя, поэтому вам придется управлять своим собственным механизмом учетной записи и привязать его к Home. Здесь есть несколько решений:

Чтобы обработать (3), вы можете подумать, что (1) позволяет вам получать токены, а решение OAuth для (2) требует, чтобы вы раздавали токены. Можно ли их совместить? Ну ... возможно, но это не так просто. Вы не можете просто передать конечные точки Google OAuth2 в Home - они явно блокируют это, и вам нужно контролировать свои конечные точки OAuth2. Однако вы можете создавать конечные точки прокси, но я не исследовал последствия этого для безопасности.

Думаю, вы на правильном пути - использование Диска - хорошее место для хранения информации о пользователях. Использование привязки учетной записи Home дает вам место, где они должны зайти на ваш веб-сайт для аутентификации и авторизации своего Home, и вы можете использовать это, чтобы сделать то же самое для их Диска.

person Prisoner    schedule 27.01.2017
comment
Ах я вижу. Так что нет никакого способа обойтись без моей собственной системы учетных записей пользователей для хранения этого материала. Похоже, мне нужно еще кое-чему научиться! А пока я отмечу это как принятый ответ. Спасибо. - person Jay2645; 27.01.2017

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

Хорошая новость в том, что вам нужно сделать это только один раз. Когда ваше приложение запрашивает авторизацию, оно должно указывать «офлайн», что приведет к тому, что вам будет выдан токен обновления. Вы должны сохранить это где-нибудь в своей базе данных пользователей. Всякий раз, когда вам нужно получить доступ к Диску пользователя, вы можете использовать сохраненный токен обновления, чтобы запросить токен доступа, и все готово.

person pinoyyid    schedule 27.01.2017