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

Я пытаюсь реализовать поток кода авторизации, чтобы связать действия в 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?

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


person Blasco    schedule 07.06.2018    source источник


Ответы (1)


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

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

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

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);
  });

Использованная литература:

person Aza T    schedule 07.06.2018