Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react firebase ui中查找用户是否首次登录?_Javascript_Reactjs_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 如何在react firebase ui中查找用户是否首次登录?

Javascript 如何在react firebase ui中查找用户是否首次登录?,javascript,reactjs,firebase,firebase-authentication,Javascript,Reactjs,Firebase,Firebase Authentication,我想知道用户是第一次登录还是已经登录,以便我可以将用户数据存储在firestore中以供进一步使用。我使用的是自动生成用于身份验证的UI。如果用户是否首次登录,则返回的数据不具有该值。下面是代码 const uiConfig = { signInFlow: "popup", signInOptions: [ firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.Ema

我想知道用户是第一次登录还是已经登录,以便我可以将用户数据存储在firestore中以供进一步使用。我使用的是自动生成用于身份验证的UI。如果用户是否首次登录,则返回的数据不具有该值。下面是代码

  const uiConfig = {
    signInFlow: "popup",
    signInOptions: [
      firebase.auth.GoogleAuthProvider.PROVIDER_ID,
      firebase.auth.EmailAuthProvider.PROVIDER_ID,
    ],
    signInMethod: firebase.auth.EmailAuthProvider.EMAIL_LINK_SIGN_IN_METHOD,
    forceSameDevice: false,
    callbacks: {
      signInSuccessWithAuthResult: () => false,
    },
  };


  useEffect(() => {
      firebase.auth().onAuthStateChanged((user) => {
        console.log("auth state changed");
        console.log(user);
      });    
  }, []);


// The UI part

<StyledFirebaseAuth
    uiConfig={uiConfig}
    firebaseAuth={firebase.auth()}
/>
const uiConfig={
signInFlow:“弹出”,
签署:[
firebase.auth.GoogleAuthProvider.PROVIDER\u ID,
firebase.auth.EmailAuthProvider.PROVIDER\u ID,
],
签名方法:firebase.auth.EmailAuthProvider.EMAIL\u链接\u登录\u方法,
forceSameDevice:false,
回调:{
SignInsessWithAuthResult:()=>false,
},
};
useffect(()=>{
firebase.auth().onAuthStateChanged((用户)=>{
log(“身份验证状态已更改”);
console.log(用户);
});    
}, []);
//用户界面部分

一切正常,但如果用户是否首次登录,我无法获取数据。帮助我。

当用户首次注册时,您可以在您的登录方法中检查
user.additionalUserInfo.isNewUser
,其中
user
是登录凭据

您还可以检查(不言自明)

我相信它也会出现在
onAuthStateChanged
中的
用户
对象中

user.metadata.creationTime === user.metadata.lastSignInTime

你能告诉我用户.additionalUserInfo.isNewUser的确切位置吗@一些特别的人。它不在onAuthStateChanged中返回的对象中。我认为应该从ui选项中的
SignInsessWithAuthResult
中检索它
user.metadata.creationTime === user.metadata.lastSignInTime