当打开启用电子邮件确认时,如何检查具有相同电子邮件地址的用户是否已存在。
当打开启用电子邮件确认时,supabase会返回混淆/虚假的用户对象,根据此评论,这是一个功能。
如何在不关闭电子邮件确认的情况下检查电子邮件是否已存在?
我尝试使用
supabase.auth.api.getUser
传递,但这需要 JWT,而不是 user id
。
不确定以下是否是正确的方法,但我按如下方式执行(TypeScript):
const [errorMsg, setErrorMsg] = useState<string | null>(null);
const [successMsg, setSuccessMsg] = useState<string | null>(null);
async function signUp(formData: Values) {
const { data, error } = await supabase.auth.signUp({
email: formData.email,
password: formData.password,
});
if (error) {
setErrorMsg(error.message);
} else if (data.user?.identities?.length === 0) {
setErrorMsg('User already registered');
} else {
setSuccessMsg('Success! Please check your inbox.');
}
}
当用户已经注册时,data.user?.identities?.length
为 0。
即使电话提供商被禁用,也只需前往提供商处并禁用电话确认即可。然后你会在错误字段中得到它。那个
user_already_exists