如何使用 Firebase Node.js SDK 创建长期有效的令牌

How can I create long-lived tokens with Firebase Node.js SDK

我正在尝试通过我的 firebase 用户在 google 上对 link 操作实施授权代码流:

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

到目前为止我理解的流程如下:

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

2 - 用户登录并且 google 收到授权令牌

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

4 - Google在访问令牌即将过期时发送刷新令牌以获取新的访问令牌并获取新的访问令牌和新的到期时间

我做对了吗?

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

如何使用 Firebase Node.js SDK 获得长期有效的令牌?

还有其他方法吗?

是的,您的 OAuth2 流程正确。

Firebase Admin SDK 允许您使用生成的自定义令牌让用户登录到您的 Firebase 服务。虽然自定义令牌会在 1 小时内过期,但一旦用户登录,他们应该无限期地进行身份验证(即直到用户注销)。因此,SDK 确实不需要生成刷新令牌。

我建议采用不同的方法。使用 Google 的 SignIn 帮助程序意图上的操作来获取用户的信息,例如电子邮件、姓名等。使用此信息,您将能够按如下方式让用户登录到 Firebase(引用自"Create Custom Token" 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);
  });

参考文献: