如何使用Firebase Node.js SDK创建长寿命令牌

时间:2018-06-07 12:03:09

标签: firebase oauth-2.0 firebase-authentication actions-on-google firebase-admin

我正在尝试实施授权代码流程,以便将google上的操作与我的firebase用户相关联:

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

到目前为止,我已经了解了以下流程:

1 - 用户访问应用程序并重定向到授权URL端点

2 - 用户登录和Google收到授权令牌

3 - Google将此授权令牌发送到令牌网址端点,并获取访问令牌refresh_token和到期时间

4 - 当访问令牌过期并获得新的访问令牌和新的到期时间时,Google会发送刷新令牌以获取新的访问令牌

我做对了吗?

作为授权令牌和访问令牌,我正在使用Firebase中的自定义令牌。我的问题是,我该如何实现刷新令牌?我无法从Firebase Node.js SDK服务器端获取此令牌。

如何使用Firebase Node.js SDK来维护长寿命令牌?

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

是的,您的OAuth2流程正确。

Firebase管理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);
  });

参考文献: