Ссылка на аккаунт помощника Google с Facebook - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать чат-бота с помощью Dialogflow для Google Home. Требуется, чтобы пользователь ввел URL. Теперь это определенно будет длинный и сложный URL-адрес, который я не могу воссоздать, и я не могу заставить пользователя зайти в дом Google.

У меня была идея, что пользователь будет вводить URL-адрес агента в мессенджере. Я храню это в базе данных Firebase, а затем обращаюсь к нему с помощью второго агента.

Теперь у меня проблема с аутентификацией, я надеялся использовать привязку аккаунта в своем действии Google с Facebook. Но я не могу войти в Facebook с Google Home. Или, если я могу, я не могу найти какую-либо документацию, относящуюся к этому делу. Facebook не предоставляет необходимый идентификатор клиента и секрет (насколько я вижу).

Мне удалось связать аккаунт Amazon и Gmail с Alexa и Amazon Echo. В этих случаях вам нужно будет войти в Google или Amazon через приложение Alexa или веб-страницу. Тогда это будет интегрировано с вашим Эхо, и навык станет пригодным для использования.

Кто-нибудь имеет представление о том, как я могу сделать ссылку, если нет, то у кого-то есть представление о том, как я могу решить общую проблему?

Этот вопрос остался без ответа на других форумах, но я надеялся либо решить его, либо найти альтернативу.

1 Ответ

0 голосов
/ 05 июля 2018

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

Учетная запись, связывающая с учетной записью Facebook

Вы пометили firebase-authentication, поэтому я собираюсь предположить, что вы используете его для аутентификации и включили вход через Facebook через него. Это означает, что у вашего пользователя есть «Учетная запись Firebase», но они входят в эту учетную запись с помощью Facebook.

Я предполагаю, что у вас есть способ получить URL от мессенджера после его входа в систему.

Хитрость в этом случае заключается в настройке Связывания учетной записи между их учетной записью Firebase и учетной записью Assistant. Это делается путем настройки сервера OAuth2 , который имеет доступ к учетным записям Firebase и будет создавать авторизацию и обновлять токены, которые предоставляются помощнику.

В действии вы отправите пользователя к помощнику для входа в систему , который перенаправит его на страницу входа и отправит однократный код авторизации помощнику. Затем помощник будет использовать ваш сервер OAuth2 для обмена этим кодом на аутентификацию и обновления токенов. Периодически он будет использовать токен обновления для получения новых токенов авторизации.

Когда пользователь возвращается к беседе через Ассистента, вам будет выдан токен авторизации, и вы сможете использовать его для поиска пользователя. Поскольку вы также знаете их учетную запись Facebook, вы можете получить URL-адрес, как и планировали.

У этого метода есть недостатки - он очень сложный, и настройка собственного сервера OAuth2 не для слабонервных. Вы можете использовать что-то вроде Auth0 вместо Firebase Authentication для выполнения той же задачи, но тогда у вас не будет легкого доступа к базе данных Firebase.

Учетная запись связана как с Facebook, так и с Google

Однако в вашей учетной записи Firebase вам не нужно ограничивать их только входом в Facebook. Вы можете сделать так, чтобы они использовали Firebase для записи и учетных записей Facebook и Google, которые они используют. Это "свяжет" две учетные записи в вашей системе.

При этом вам не нужно настраивать сервер OAuth2. Вместо этого помощник может использовать Google Sign In для аутентификации. Если облачный проект Google, который использует Firebase, и помощник - это один и тот же проект, то, как только пользователь войдет на веб-страницу вашего проекта со своей учетной записью Google, вы получите идентификационный токен на помощнике, который будет содержать его Google ID. Вы можете использовать это, чтобы сопоставить их с учетной записью Firebase, получить идентификатор Facebook и продолжить оттуда.

Но это все еще много работы и немного запутанно, прыгать между системами.

Использование только Google Assistant (и, возможно, веб-страницы)

Если вы хотите сделать некоторые предположения об устройствах, которые используют ваши пользователи, то вы можете сделать все это всего с помощью Ассистента. Помощник работает не только на Google Home и других интеллектуальных колонках, но и на большинстве современных устройств Android и iOS.

Таким образом, вы можете определить, есть ли у них в наличии такое устройство , и, если они есть, и его нет на нем, направить их на переключение на это устройство , когда вам нужно URL.

Если у них нет такого доступного устройства (возможно, потому что их версия Android старше), и вы думаете, что это может быть распространенным сценарием, вам может потребоваться сделать доступным другой источник ввода. Это может быть одно из приведенных выше решений, или вам может потребоваться просто иметь простую веб-страницу (возможно, через Firebase Hosting и Firebase Functions), где они входят в систему, используя свою учетную запись Google (чтобы вы получали их ID), и вы позволяете им введите URL. Если вам просто нужен URL-адрес - прохождение Dialogflow может оказаться более сложным, чем вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...