【发布时间】:2018-11-13 07:33:02
【问题描述】:
在 Firebase 中,我需要在不创建用户的情况下检查 Facebook 用户是否存在。最初,用户是匿名的,他们尝试使用 Facebook 登录。如果 Facebook 帐户尚未链接到我系统中的用户,我希望此操作失败。它不会链接到当前用户,因为他们是匿名的,
如果我使用 Auth.signInAndRetrieveDataWithCredential,我预计会出现“auth/user-not-found”错误,但只是简单地创建了用户。这是错误还是预期?
let credential = firebase.auth.FacebookAuthProvider.credential(
event.authResponse.accessToken)
firebase.auth().signInAndRetrieveDataWithCredential(credential).then( (userCredential) => {
let user = userCredential.user
app.debug("DEBUG: Existing user signed in:"+user.uid)
this.loginSuccess(user)
}).catch( (err) => {
app.error("ERROR re-signing in:"+err.code)
$("#login_status_msg").text(err)
})
如果我使用 User.reauthenticateAndRetrieveDataWithCredential 代替,我会收到错误“auth/user-mismatch”,这是有道理的,因为用户当前是匿名的。但是,如果凭据不存在,我预计可能会抛出“auth/user-not-found”,但这不会发生。
我没有找到一种方法来获取我的匿名用户,让他们使用 Facebook 登录,然后查看其他用户是否已链接到该 Facebook 凭据,如果该用户不存在则不创建该用户。
如果您想知道为什么?我的情况是: 系统允许匿名用户
- 用户登录,然后通过注册 Facebook 转换为登录用户。
- 应用卸载
- 应用重新安装
- 用户启动应用程序,最初是匿名的。
- 他们再次尝试使用 Facebook 登录。在这一点上,如果他们还没有用户,我想阻止他们创建用户。如果他们已经有用户 ID,则代码可以正常工作并将他们的匿名帐户 ID 更改为原始用户 ID,这很好。
【问题讨论】:
标签: javascript facebook firebase firebase-authentication