Javascript 如何在用户每次登录firebase时发送通知邮件?
我试图在用户每次登录react应用程序时发送通知邮件(或任何介质)。目前,我正在使用Javascript 如何在用户每次登录firebase时发送通知邮件?,javascript,reactjs,firebase,firebase-authentication,Javascript,Reactjs,Firebase,Firebase Authentication,我试图在用户每次登录react应用程序时发送通知邮件(或任何介质)。目前,我正在使用 Firebase.auth().onAuthStateChanged(async(userData) => { if (userData) { const sendMail = await api.sendMail(userData.email); } } 但问题是,每次我刷新应用程序时,它都会调用sendMail API。 所以我想我会在点击登录按钮时这样做,但问题是它是一个社交登录。
Firebase.auth().onAuthStateChanged(async(userData) => {
if (userData) {
const sendMail = await api.sendMail(userData.email);
}
}
但问题是,每次我刷新应用程序时,它都会调用sendMail API。
所以我想我会在点击登录按钮时这样做,但问题是它是一个社交登录。
我正在使用signInWithRedirect
像Firebase.auth().signInWithRedirect(facebookProvider)代码>。
在这种情况下,我没有我的应用程序的过去状态。
是否有任何方法可以通过重定向进行此登录?您不希望触发此操作,因为正如您所指出的,这将在用户的登录状态更改时发送电子邮件
由于您正在使用Facebook对用户进行身份验证,因此您需要了解Firebase用户可用的身份验证事件和方法。在这种情况下,如果使用signInWithRedirect
,则应在或getRedirectResult
期间触发电子邮件
使用带有弹出窗口的符号的示例:
firebase.auth().signInWithPopup(provider).then(async result => {
const user = result.user;
const sendMail = await api.sendMail(user.email);
}).catch(function(error) {
// Handle Errors here.
});
使用带有重定向的符号的示例:
firebase.auth().getRedirectResult().then(async result => {
if (result.credential) {
const user = result.user;
const sendMail = await api.sendMail(user.email);
}
}).catch(function(error) {
// Handle Errors here.
});
非常感谢你回来。但是不可能使用重定向的符号来执行此操作
?这是完美的。我不知道getRedirectResult
。谢谢需要澄清的是,getRedirectResult在authStateChanged中使用它并不是一个坏做法?有最佳实践吗Firebase.auth().onAuthStateChanged(异步(userData)=>{const result=Wait Firebase.auth().getRedirectResult();如果(result.credential){const user=result.user;console.log(user);}
No不要把它放在那里。最好把它放在componentDidMount()中
因为用户将被重定向回您的站点。