如何在 Ionic 4 中使用 Firebase 处理刷新令牌?

Posted

技术标签:

【中文标题】如何在 Ionic 4 中使用 Firebase 处理刷新令牌?【英文标题】:How to handle refresh token with Firebase in Ionic 4? 【发布时间】:2020-03-22 22:57:43 【问题描述】:

我正在尝试在我的 Ionic 4 应用程序中将 firebase 实现为身份验证机制。 我正在使用此代码让用户使用电子邮件和密码登录:

    loginUser(value)
   return new Promise<any>((resolve, reject) => 
     firebase.auth().signInWithEmailAndPassword(value.email, value.password)
     .then(
       res => resolve(res),
       err => reject(err))
   )
  

由于 Firebase 使用在创建 1 小时后过期的 accessToken 并使用 refreshToken 刷新第一个,我不知道如何继续;我的意思是我应该在我的数据库中同时保存 accessToken 和 refreshToken 吗?如何刷新令牌?这个操作是自动完成的还是我应该做点什么?我还在使用 JavaEE 服务器,它通过传递 accessToken 来检测用户是否正确使用 Firebase 登录。

【问题讨论】:

【参考方案1】:

我应该在我的数据库中同时保存 accessToken 和 refreshToken 吗?

与其自己保存令牌,不如告诉 Firebase 将身份验证信息保存在哪里Auth.setPersistence()。例如:

firebase.auth().setPersistence(fire.localPersistence())

请务必测试是否需要这样做,因为在大多数环境中,Firebase 会自动确定在何处保留身份验证状态。


如何刷新令牌?这个操作是自动完成的还是我应该做点什么?

ID 令牌在创建后大约 55 分钟由 Firebase SDK 自动刷新。

【讨论】:

谢谢!我应该在应用程序的哪里添加这行代码?顺便问一下,我在哪里可以找到最新版本的完整工作示例来实现 Facebook 和 Google 的身份验证? 如前所述,您可能根本不必调用此 API。如果您最终不得不调用它,请在使用 firebase.auth() 实例上的任何其他 API 之前执行此操作。 好!顺便说一句,我只需要从 firebase 实例获取 accessToken 并将其发送到服务器?另外,您能否添加更多关于如何在不同页面中获取 currentUser 的代码行? 让用户进入不同的页面(所以在重新加载之后),可能意味着您需要一个身份验证状态监听器。请参阅firebase.google.com/docs/auth/web/… 要验证用户在服务器上的状态,请参阅firebase.google.com/docs/auth/admin/verify-id-tokens

以上是关于如何在 Ionic 4 中使用 Firebase 处理刷新令牌?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 控制台上部署 ionic 4 应用程序?

如何自动检测已登录的用户并将其转至仪表板页面,而无需再在Ionic 4和firebase中登录

Ionic 4 / Capacitor PWA 应用不会更新 Firebase 托管的最新内容

向 Ionic 4 项目添加 cordova-plugin-firebase-dynamiclinks 导致无法构建

如何使用 Angular Ionic 从我的 Firebase 实时数据库中获取一项

如何在 ionic v1 中跟踪 Firebase 分析中的事件