如何在 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 导致无法构建