Как я могу создать долгоживущие токены с помощью Firebase Node.js SDK - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь реализовать поток кода авторизации, чтобы связать действия в Google с моими пользователями Firebase:

https://developers.google.com/actions/identity/oauth2-code-flow

Пока что я понял последовательность следующим образом:

1 - пользователь получает доступ к приложению и перенаправляется на конечную точку URL авторизации

2 - пользователь входит в систему, и Google получает токен авторизации

3 - Google отправляет этот токен авторизацииконечная точка URL-адреса токена и получает токен доступа refresh_token и время истечения срока действия

4 - Google отправляет токен обновления, чтобы получить новый токен доступа, когда истекает срок действия токена доступа, и получает новый токен доступа иновое время истечения

Правильно ли я понял?

В качестве токена авторизации и токена доступа я использую пользовательские токены из Firebase.У меня вопрос, как я могу реализовать токен обновления?Я не могу получить этот токен со стороны сервера Firebase Node.js SDK.

Как я могу смазать долгоживущие токены с помощью Firebase Node.js SDK?

Есть ли другой подход?

1 Ответ

0 голосов
/ 08 июня 2018

Да, вы правильно поняли процесс OAuth2.

Firebase Admin SDK позволяет вам войти в службу Firebase с помощью созданных пользовательских токенов.Хотя срок действия пользовательского токена истекает в течение 1 часа, после входа пользователя он должен проходить аутентификацию на неопределенный срок (т. Е. До тех пор, пока пользователь не выйдет из системы).Таким образом, SDK не нужно генерировать токен обновления.

Я бы предложил другой подход.Используйте Действия для вспомогательного намерения Google SignIn, чтобы получить информацию о пользователе, такую ​​как электронная почта, имя и т. Д. Используя эту информацию, вы сможете зарегистрировать пользователя в Firebase следующим образом (см. Документ «Создание пользовательского токена» Firebase):

var uid = "some-uid";

admin.auth().createCustomToken(uid)
   // token == custom token
  .then(function(token) {
    firebase.auth().signInWithCustomToken(token).catch(function(error) 
    {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      // ...
    });
  })
  .catch(function(error) {
    console.log("Error creating custom token:", error);
  });

Ссылки:

...