Действия в Google / DialogFlow: получить данные пользователя из idToken без объекта conv - PullRequest
0 голосов
/ 29 ноября 2018

У меня развернуто действие, для которого включена привязка аккаунта Google.Это Действие использует облачную функцию в качестве полной.Мы извлекаем пользователя из вызова DialogFlow, используя этот метод:

function userFromRequest(request) {
  return request.body.originalDetectIntentRequest.payload.user;
}

Эта функция возвращает эти данные пользователя:

   { 
     "idToken": "eyJhbGciOiJSU...",
     "lastSeen": "2018-11-29T16:58:22Z",
     "locale": "en-US",
     "userId": "ABwpp..."
   }

Мой вопрос: как я могу получить информацию о пользователе, такую ​​какадрес электронной почты, имя и т. д., извне приложение DialogFlow.

Во всех примерах документации доступен объект conv:

app.intent('Default Welcome Intent', async (conv) => {
  const {payload} = conv.user.profile;
  const name = payload ? ` ${payload.given_name}` : '';
}

В нашем случае мыхочу просто взять userId или idToken и получить информацию о пользователе.Это может быть что-то вроде этого:

const dialogflow = require("actions-on-google");    
const app = dialogflow({clientId: '94661...@apps.googleusercontent.com'});

app.getUserData(idToken); //this does not exists, how to have something equivalent?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

idToken - это обычный JWT (JSON Web Token) , подписанный одним из ключей Google (которые очень часто вращаются).Хотя вы должны проверить подпись, вам не нужно to.

Вы можете использовать любую библиотеку JWT.Поскольку похоже, что вы используете node.js, вы можете использовать что-то вроде jsonwebtoken , чтобы расшифровать его следующим образом:

const jwt = require('jsonwebtoken');
// get the decoded payload ignoring signature, no secretOrPrivateKey needed
const decoded = jwt.decode(token);

You реально следует проверить подпись, однако вам необходимо получить ключи в удобном формате.Часть мультифокальной библиотеки , которая делает это, использует версию ключей JWK от Google и преобразует их в формат PEM для проверки.

0 голосов
/ 30 ноября 2018

вы можете использовать "google-auth-library", чтобы проверить токен и получить полезную нагрузку.вот ссылка на документацию

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