firebase 如何从onAuthStateChanged检索UserCredential

dddzy1tm  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(112)

我的应用支持多个身份提供程序(谷歌、Facebook、电子邮件)因此,通过订阅来自onAuthStateChanged的回调,可以更容易地触发登录流。我尝试确定这是否是用户第一次登录。此数据似乎可以通过函数getAdditionalUserInfo(userCredential: UserCredential)获得。否则,我需要从几个不同的代码路径触发此登录流,它将与主登录流异步。

export const watchAuthChanges = (onLoginSuccess, onLogoutSuccess, onError) => {
  onAuthStateChanged(auth, async (user) => {
    if (user) {
      const token = await getIdToken(user);
      const refreshToken = async () => {
        return await getIdToken(user, true);
      }

      const additionalInfo = getAdditionalUserInfo(???)
      // I want to pass in the additional user info into onLoginSuccess
      onLoginSuccess(user, token, refreshToken);
    } else {
      onLogoutSuccess();
    }
  }, (error) => {
    onError(error)
  });
}
ajsxfq5m

ajsxfq5m1#

UserCredential仅在用户主动登录时可用。否则,当身份验证状态恢复时,无法获取它。
但实际上,您也可以通过查看User对象的metadata来确定用户是否是第一次登录。如果creationTimelastSignInTime的值相同(或者彼此 * 非常 * 接近),则用户是第一次登录。

相关问题