我的应用支持多个身份提供程序(谷歌、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)
});
}
1条答案
按热度按时间ajsxfq5m1#
UserCredential
仅在用户主动登录时可用。否则,当身份验证状态恢复时,无法获取它。但实际上,您也可以通过查看
User
对象的metadata
来确定用户是否是第一次登录。如果creationTime
和lastSignInTime
的值相同(或者彼此 * 非常 * 接近),则用户是第一次登录。