firebase - 如何使用 Firebase Node.js SDK 创建长期存在的令牌
问题描述
我正在尝试实施授权代码流以将 google 上的操作与我的 firebase 用户链接:
https://developers.google.com/actions/identity/oauth2-code-flow
到目前为止,我对流程的理解如下:
1 - 用户访问应用程序并被重定向到授权 url 端点
2 - 用户登录,谷歌收到授权令牌
3 - Google 将此授权令牌发送到令牌 url 端点并获取访问令牌、刷新令牌和过期时间
4 - 当访问令牌即将过期时,Google 会发送刷新令牌以获取新的访问令牌,并获取新的访问令牌和新的过期时间
我做对了吗?
作为授权令牌和访问令牌,我使用来自 Firebase 的自定义令牌。我的问题是,如何实现刷新令牌?我无法从 Firebase Node.js SDK 服务器端获取此令牌。
如何使用 Firebase Node.js SDK 增加长期存在的令牌?
还有另一种方法吗?
解决方案
是的,您的 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);
});
参考:
- “如何使用刷新令牌?” 来自 Firebase 的 GitHub
- Firebase 文档中的“创建自定义令牌”
- Actions on Google 文档中的“请求登录助手”
推荐阅读
- reactjs - react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.createRoo
- java - 无法运行无头 chromedriver
- content-management-system - 合作编辑对鹡鸰的评论?
- r - 如何将同步 R dygraphs 的 x 轴与单双 y 轴对齐?
- java - 如何自定义 Bigbluebutton 模块,如(poll)?
- java - 如何在依赖的 Gradle 项目中使用依赖项中的实现依赖项?
- sql - 如何在更新时将行的副本放入另一个表中?
- java - Spring-boot OncePerRequestFilter - 缓存请求后缺少请求参数
- django - 如何将数据添加到特定用户并显示在特定页面中?
- firebase - 如何管理用户数据