【问题标题】:What's the difference between instanceId and getIdTokeninstanceId 和 getIdToken 有什么区别
【发布时间】:2019-06-20 19:03:52
【问题描述】:

我不明白这之间有什么区别:

FirebaseAuth.getInstance().currentUser.getIdToken(true).addOnSuccessListener {
    Log.d("tag",it.token) // token #1
} 



FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener {
    Log.d("tag", it.token) //token #2
}


这两种方法都返回一些令牌,它们之间有什么区别?

【问题讨论】:

    标签: android firebase kotlin firebase-authentication firebase-cloud-messaging


    【解决方案1】:

    getIdToken(boolean forceRefresh)

    为用户获取 Firebase 身份验证 ID 令牌;在针对您自己的后端进行身份验证时很有用。

    getIdToken 属于 FirebaseUser 类,当您使用自己的服务器时,您可以使用令牌对用户进行身份验证。

    getInstanceId() 返回您下载的应用程序的 ID,它还用于 FCM 以便能够向已下载该应用程序的特定手机发送通知。

    实例 ID 是稳定的,除非:

    1. 应用删除实例 ID
    2. 应用已在新设备上恢复
    3. 用户卸载/重新安装应用程序
    4. 用户清除应用数据

    https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getInstanceId()

    【讨论】:

      【解决方案2】:

      这两个令牌的用途和生命周期截然不同。

      使用 Firebase 云消息传递的每个应用安装都有自己唯一的实例 ID。因此,此 ID 标识了自设备上的单个应用程序。如果您在同一部手机上有多个使用 FCM 的应用程序,则每个应用程序都有自己的实例 ID。如果您在多部手机上使用 FCM 的同一应用程序,则它在每部手机上都有一个唯一的实例 ID。 Peter 的回答很好地解释了这个值何时会改变。

      每次用户使用 Firebase 身份验证登录时,他们都会获得一个 ID 令牌。此 ID 令牌有效期为一小时,并验证用户已登录该应用程序。 (略少于)一个小时后,Firebase SDK 会刷新 ID 令牌。

      【讨论】:

        猜你喜欢
        • 2022-08-19
        • 1970-01-01
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        相关资源
        最近更新 更多