使用模块化 JS SDK 通过 Firebase 电子邮件链接身份验证检查 isNewUser

3zz*_*zzy 4 javascript firebase firebase-authentication

这里的官方片段说:

  // You can access the new user via result.user
  // Additional user info profile not available via:
  // result.additionalUserInfo.profile == null
  // You can check if the user is new or existing:
  // result.additionalUserInfo.isNewUser
Run Code Online (Sandbox Code Playgroud)

甚至API 参考也说:

包含因成功登录、链接或重新身份验证操作而产生的其他用户信息的对象。

不过我明白了additionalUserInfo is undefined。我需要检测电子邮件链接登录是否是新用户。

我的代码:

await setPersistence(auth, browserLocalPersistence);
const result = await signInWithEmailLink(auth, email.value, window.location.href);
if (result && result.user) {
    window.localStorage.removeItem('email');
    window.localStorage.removeItem('its');
    console.log(result.additionalUserInfo.isNewUser()); // undefined
    return router.push({ path: "/dashboard" }); 
}
Run Code Online (Sandbox Code Playgroud)

Dha*_*raj 8

您需要getAdditionalUserInfo在新的模块化 SDK 中单独使用该方法,如本Github 问题中所述。

import {signInWithEmailLink, getAdditionalUserInfo} from "firebase/auth"

const result = await signInWithEmailLink(auth, email.value, window.location.href);
const {isNewUser} = getAdditionalUserInfo(result)
// Pass the UserCredential                ^^^^^^
Run Code Online (Sandbox Code Playgroud)