Javascript 为什么Firebase获取的Facebook用户id与Facebook图表中与同一帐户关联的Facebook id不同?

Javascript 为什么Firebase获取的Facebook用户id与Facebook图表中与同一帐户关联的Facebook id不同?,javascript,facebook-graph-api,firebase,Javascript,Facebook Graph Api,Firebase,我已将Facebook身份验证与Firebase集成到我的网站中。我正在使用Firebase JavaScript API 我使用的代码直接取自Firebase教程,标题为“用户登录和身份验证”,可在此处找到: 这一切都非常有效,记录了正确的信息 但是,记录的id(即Firebase仪表板数据中可见的用户id)与我通过Facebook图表获得的Facebook id不同 使用Firebase,我得到一个17位的用户id。 通过Facebook Graph(),我得到了一个9位数的用户id 这意味

我已将Facebook身份验证与Firebase集成到我的网站中。我正在使用Firebase JavaScript API

我使用的代码直接取自Firebase教程,标题为“用户登录和身份验证”,可在此处找到:

这一切都非常有效,记录了正确的信息

但是,记录的id(即Firebase仪表板数据中可见的用户id)与我通过Facebook图表获得的Facebook id不同

使用Firebase,我得到一个17位的用户id。 通过Facebook Graph(),我得到了一个9位数的用户id

这意味着我不能使用Firebase登录、获取Facebook id并通过Facebook图形发出请求-同一用户的用户id是不同的


为什么会存在这种差异?如何使用Firebase获得与Facebook Graph中显示的相同的Facebook id?

Facebook最近推出了其Open Graph的2.0版。随之而来的是许多变化。其中之一是Facebook向Facebook应用程序返回的用户ID。不是每个应用程序都会收到用户的全局Facebook ID,而是每个应用程序现在都会收到他们所谓的“应用程序范围ID”。这意味着每个应用程序都会收到用户X的不同用户ID,即使每个唯一ID仍然映射到用户X。如果您需要能够跨多个应用程序映射用户,您可以使用他们的ID。最终,这是Facebook做出的一个我们在Firebase无法控制的改变

如果您从简单登录中获得17个字符的ID,可能是因为您的Facebook应用程序是在更改Facebook登录v2之前创建的(一个多月前)。我在您的Open Graph Explorer请求中看到它正在使用v2。但在简单登录中,我们使用的是v1和v2的混合版本,具体取决于您的Facebook应用程序创建的时间。我们正在为您添加一个选项,以决定您想要使用哪个版本的Facebook开放图API,但尚未添加该选项。如果你现在想使用v2,你只需要创建一个新的Facebook应用程序,一切都应该正常。如果你想继续使用v1,请注意Facebook将在大约10个月后停止支持它


新用户ID将在成功登录时从Firebase返回的对象中的providerData对象中返回。

谢谢,Jacob。现在一切正常。我注意到开放式图表已经更新了——并没有把二和二放在一起@内特,我也有同样的问题。你能告诉我你是怎么解决的吗?我使用firebase auth用户界面进行身份验证。我可以通过将facebook用户ID存储在firebase中而不是firebase auth用户ID来解决这个问题,谢谢,请添加更详细的答案。请添加更多关于您答案的详细信息。
var myRef = new Firebase("https://#######.firebaseio.com");
var auth = new FirebaseSimpleLogin(myRef, function(error, user) {
    if (error) {
        // an error occurred while attempting login
        console.log(error);
    } else if (user) {
        // user authenticated with Firebase
        console.log("User ID: " + user.id + ", Provider: " + user.provider);
    } else {
        // user is logged out
    }
});
auth.login("facebook");