- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已将 Facebook 身份验证与 Firebase 集成到我的网站中。我正在使用 Firebase JavaScript API。
我使用的代码是直接从标题为“用户登录和身份验证”的 Firebase 教程中提取的:https://www.firebase.com/docs/web/guide/user-auth.html
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");
这一切都运行良好,记录了正确的信息。
但是,记录的 ID(即在 Firebase 仪表板数据中可见的用户 ID)与我通过 Facebook Graph 获得的 Facebook ID 不同。
使用 Firebase,我得到一个 17 位的用户 ID。使用 Facebook Graph ( https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Did%2Cname&version=v2.0 ),我得到一个 9 位数的用户 ID。
这意味着我无法使用 Firebase 登录、获取 Facebook ID 并通过 Facebook Graph 发出请求 - 同一用户的用户 ID 不同。
为什么会存在这种差异?我如何使用 Firebase 获取 Facebook Graph 中显示的相同 Facebook ID?
最佳答案
Facebook 最近推出了 Open Graph 的 2.0 版。随之而来的是很多变化。其中之一是 Facebook 返回给 Facebook 应用程序的用户 ID。不是每个应用程序都接收用户的全局 Facebook ID,现在每个应用程序都会接收他们所谓的“应用程序范围 ID”。这意味着即使每个唯一 ID 仍然映射到用户 X,每个应用程序都会收到用户 X 的不同用户 ID。如果您需要能够跨多个应用程序映射用户,您可以使用他们的 Business Mapping API .最终,这是 Facebook 做出的改变,我们 Firebase 无法控制。
如果您从简单登录获得 17 个字符的 ID,可能是因为您的 Facebook 应用程序是在 Facebook 登录 v2 发生更改之前创建的(一个多月前)。我在您的 Open Graph Explorer 请求中看到它正在使用 v2。但是对于简单登录,我们混合使用 v1 和 v2,具体取决于您的 Facebook 应用程序的创建时间。我们正在努力添加一个选项,供您决定要使用哪个版本的 Facebook Open Graph API,但尚未添加。如果此时你想使用 v2,你只需要创建一个新的 Facebook 应用程序,一切都应该可以工作。如果您想继续使用 v1,请注意 Facebook 将在大约 10 个月后停止支持它。
Search for "App-scoped User IDs" on this page for their official changelog information.
关于javascript - 为什么 Firebase 获取的 Facebook 用户 ID 与 Facebook Graph 中与同一帐户相关联的 Facebook ID 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169581/
现在我正在尝试实现 flash programming specification对于 PIC32MX。我正在使用 PIC32MX512L 和 PIC32MX512H。 PIC32MX512L最终必须
我是一名优秀的程序员,十分优秀!