我在网络应用程序上使用Firebase Auth,并且通过chrome扩展程序将应用程序插入网页。
新用户使用Google帐户或电子邮件+密码使用Firebase API创建帐户。
入职过程的第一步之一是打开一个新标签(与应用相同的域),并在其中注入嵌入iframe的应用。 Iframe与Web应用程序(用户在其中注册)具有相同的域。 “ iframe应用”使用Firebase Auth登录用户。
对于某些新用户,Firebase Auth不会检索用户。对于某些新用户,Firebase Auth确实会检索新用户。
为什么会缺乏一致性?
使用Google进行注册的代码
handleSignUpGoogle = () => {
const provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('email');
provider.addScope('profile');
return firebase.auth().signInWithPopup(provider);
}
使用电子邮件和密码进行注册的代码
handleSignUp = () => {
const {emailValue, passwordValue} = this.state;
firebase.auth().createUserWithEmailAndPassword(emailValue, passwordValue).then(() => {
this.props.onClose();
}).catch(err => {
this.setState({errorMessage: err.message});
});
}
用于从“ Iframe应用程序”登录用户的代码
firebase.auth().onAuthStateChanged((firebaseUser) => {
if (firebaseUser) {
firebaseUser.getIdToken().then(token => {
fetchSignInUser(token).then((user) => {
if (user && user.id && !this.state.user) {
// doing things here
return;
}
...
});