Gar*_*ary 14 google-authentication firebase google-drive-api google-identity-toolkit firebase-authentication
我正在尝试构建一个与Google云端硬盘集成并安装到其中的网络应用.用户将能够在其驱动器中创建和共享我的应用程序文件.我正在尝试使用Firebase编写它,以便我可以利用那里的许多出色的新功能.但是,我无法让auth在这两个平台上一致地工作.
这是一个仅限客户端的应用程序(至少目前为止),因此我无法使用脱机身份验证和刷新令牌.
在Firebase身份验证之前,我会使用带有gapi的Google Identity Toolkit.这通常工作正常,虽然它使用不适合移动设备的弹出流程.
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);
Run Code Online (Sandbox Code Playgroud)
Gapi有点笨拙,但它确实有效.该访问令牌可以通过调用来获得
gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse(true));
Run Code Online (Sandbox Code Playgroud)
像往常一样,访问令牌只持续大约一个小时然后到期.在重要的事情是,我们只需调用GoogleUser.reloadAuthResponse()得到刷新访问令牌.注意,这是刷新的访问令牌,而不是刷新令牌!
因此,从理论上讲,我可以使用该访问令牌来对Firebase进行身份验证,如此处所述,并且必须使用弹出流程,或者试图破解它.
尽管如此,Google表示Identity Toolkit正在被Firebase身份验证取代,新应用程序应该使用Firebase.
最新版本的Google Identity Toolkit已作为Firebase身份验证发布.它包括升级的客户端SDK,开源UI库,会话管理和用于忘记密码流的集成电子邮件发送服务.
新项目应使用Firebase身份验证.要将现有项目从Identity Toolkit迁移到Firebase身份验证,请参阅迁移指南.
Firebase有一个简单的API用于与Google进行身份验证.我可以在验证时获取并存储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;
})
Run Code Online (Sandbox Code Playgroud)
访问令牌可用,我可以使用它来读取/写入驱动器,...一小时.一旦该令牌到期,我就再也无法做任何事了.用户仍然登录到Firebase,因此我可以继续使用Firebase服务,但我需要强制用户再次登录才能访问该驱动器.这不行!
我在Firebase中寻找相当于GoogleUser.reloadAuthResponse()的东西.
您已经在使用gapi获取访问令牌并每小时刷新一次,以便与Google Drive API集成。坚持下去。您需要做的是使用以下API使用Google凭据登录Firebase:
var cred = firebase.auth.GoogleAuthProvider.credential(null, gapiAccessToken);
firebase.auth().signInWithCredential(cred).then(function(user) {
// You are signed in to Firebase now and do not need to re-sign in again.
...
});
现在,您将登录Firebase,同时继续通过gapi刷新访问令牌。Firebase会话是不确定的,因此您无需再次登录Firebase。
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |