我正在尝试实施授权代码流程,以便将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来维护长寿命令牌?
还有其他方法吗?
答案 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);
});
参考文献: