【问题标题】:How to handle refresh token with Firebase in Ionic 4?如何在 Ionic 4 中使用 Firebase 处理刷新令牌?
【发布时间】: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 登录。

【问题讨论】:

    标签: angular firebase ionic-framework firebase-authentication ionic4


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2018-03-16
    • 2017-12-24
    • 1970-01-01
    • 2014-06-15
    • 2019-03-23
    相关资源
    最近更新 更多