我正在尝试构建一个将与Google Drive集成并安装到其中的网络应用程序。用户将能够在其驱动器中创建和共享我的应用程序的文件。我正在尝试使用Firebase编写它,这样我就可以利用那里的许多优秀新功能。但是,我无法使auth在这两个平台上一致地工作。如何在Firebase中刷新Google AccessToken? #AskFirebase
这是客户端唯一的应用程序(至少现在),所以我不能使用脱机身份验证和刷新令牌。
在Firebase身份验证之前,我会使用Google Identity Toolkit with gapi。这通常工作正常,虽然它使用不适合移动友好的弹出流。
gapi.signin2.render(elementId, {
longtitle: true,
width: 230,
height: 50,
theme: "dark"
});
var auth2 = gapi.auth2.init({
client_id: CLIENT_ID,
scope: SCOPES.join(" ")
});
auth2.isSignedIn.listen(signinChanged);
auth2.currentUser.listen(userChanged);
Gapi有点笨拙,但它的工作原理。所述访问令牌可以通过调用
gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse(true));
像往常一样来获得,所述接入令牌仅持续约一个小时,然后到期。 重要的事情是,我们可以只需拨打GoogleUser.reloadAuthResponse()获取刷新的访问令牌。请注意,这是刷新的访问令牌,不是刷新令牌!
因此,从理论上讲,我可以使用该访问令牌与Firebase进行身份验证,如described here,并且只能使用弹出流量或try to hack around that。谷歌表示,Identity Toolkit正在被Firebase身份验证取代,新应用应该使用Firebase。
最新版本的Google Identity Toolkit已发布为 Firebase身份验证。它包括升级的客户端SDK,开放源代码 UI库,会话管理和集成电子邮件发送服务 用于忘记密码流。
新项目应使用Firebase身份验证。要将Identity Toolkit的现有项目迁移到Firebase身份验证,请参阅 迁移指南。
火力地堡拥有与谷歌身份验证一个简单的API。验证后,我可以获取并存储AccessToken。因此,我认为这是我应该实施auth的方式,即新的和改进的Firebase方式。此外,Firebase还提供了适用于移动设备的良好重定向流。
然而,有一个巨大的问题...
这将获得访问令牌。
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Google Access Token. You can use it to access the Google API.
var token = result.credential.accessToken;
// ...
}
// The signed-in user info.
var user = result.user;
})
访问令牌可用,我可以用它来读取/写入到驱动器,......一个小时。一旦该令牌过期,我无法再做任何事情。用户仍然登录到Firebase,因此我可以继续使用Firebase服务,但我需要强制用户再次登录才能访问该驱动器。这不会做!
我在寻找相当于Firebase中的GoogleUser.reloadAuthResponse()。
- 我该怎么做?
- 建立可访问Firebase服务和G Suite的Web应用程序的推荐方式是什么?
- 有没有官方的例子?
您可能需要查看此[论坛](https://groups.google.com/forum/#!msg/firebase-talk/wAcJFfQlFeg/IUuJXNcgDHgJ),它是一个有点旧,但它讨论了如何获取刷新令牌的一些步骤。还有一个相关的[论坛](https://groups.google.com/forum/#!topic/firebase-talk/ZPW3xtwn8g0)讲述了您遇到的问题。我不确定是否有任何更新,但我认为您可以在上述论坛中应用该解决方法。希望这可以帮助。 –
感谢您的回复和链接。这些有点过时了,特别是我认为在Google收购Firebase之前的第一个。我没有看到一个可行的解决方法,除了一个模糊的评论,不使用他们的谷歌身份验证,并自己从头开始在服务器上使用刷新令牌来实现它。 :( 我不明白为什么谷歌会公开推荐使用Firebase的Google Auth,而不是Identity Toolkit,如果它不支持在一个小时之内对Google API进行扩展身份验证,我希望Google的某些人会回复并提供一些明确的指导 – Gary