Facebook Graph API - 用户ID唯一吗?

7

我正在尝试找到一种好的方法来存储我的应用程序中用户的唯一ID。我正在使用Facebook登录进行用户管理,并为用户创建了一个类:

function FacebookUser(userObj) {
    if (userObj) {
        this.name = userObj.name;
        this.id = userObj.id;
        this.picture = userObj.picture.data.url;
        this.isLoggedIn = true;
    } else {
        this.name = 'Login';
        this.id = 0;
        this.picture = '';
        this.isLoggedIn = false;
    }
}

基本上,我有一个 Angular 服务,用于处理 Facebook 登录:
.service('facebookService', function () {

        this.getFacebookUser = function (callback) {
            $.getScript("//connect.facebook.net/en_US/sdk.js", function () {
                var appId = "12312312313123";
                FB.init({
                    appId: appId,
                    status: true,
                    cookie: true,
                    xfbml: true,
                    version: 'v2.4'
                });

                FB.getLoginStatus(function (response) {
                    if (response.status == 'connected') {
                        FB.api('/me?fields=picture,name,email', function (data) {
                            callback(new FacebookUser(data));
                        })
                    } else {
                        FB.login(function (response) {
                            FB.api('/me?fields=picture,name,email', function (data) {
                                callback(new FacebookUser(data));
                            })
                        });
                    }
                })
            });
        }

    })

我想弄清楚的是唯一标识符是什么。我想使用用户的电子邮件地址作为唯一标识符,因为它保证是唯一的,但不想请求额外的权限。最初,我想使用id字段,但我不确定id是否会更改。在Facebook文档中,他们将id字段解释如下:此人用户帐户的ID。该ID对每个应用程序都是唯一的,不能在不同的应用程序之间使用。我们的升级指南提供了有关特定于应用程序的ID的更多信息。
根据这个,ID对应用程序是唯一的,不能在不同的应用程序之间使用。然而,我在这里想要更加明确一些。如果一个用户今天登录应用程序,然后几个月后再次登录,他们的ID是否相同(如果是同一应用程序)还是会更改?第二个问题是,如果/当我做出更改并获得新的应用程序ID时,ID是否相同或更改?从技术上讲,它仍然是同一个应用程序,只是不同的版本。我的假设是,由于它是不同的appId,Facebook认为它是完全不同的应用程序,但我是Facebook API的新手,正在寻求专家的建议。
1个回答

17

我不是专家,但我会尽力回答你的问题。

如果一个用户今天登录应用程序,几个月后再次登录,他们的ID是否相同(如果是同一应用程序),还是会更改?

只要应用程序ID相同,即使在两次登录之间隔了很长时间,用户ID也不会更改。

第二个问题是,如果/当我进行更改并获得新的应用程序ID时,ID是否相同或更改?

新的应用程序ID意味着不同的应用程序,这意味着用户ID将更改。但是,如果您获得新的应用程序ID并需要访问相同的用户,则可以使用Facebook的业务映射API

摘自Facebook文档:

如果您需要在多个应用程序之间映射相同的用户ID或运行跨应用程序促销活动,我们添加了一个名为Business Mapping API的新API。 只要这些应用程序都归同一商家所有,这样就可以将已登录用户的ID映射到多个应用程序上。


谢谢!我之前不知道有商业映射API,但是我认为你已经完整地回答了我的问题。 - mwilson
我可以确认,在不同设备上,相同应用程序ID的userId是相同的。 - Leap Hawk
1
你的第一个答案救了我的一天。当我登录两次后,在我的数据库中看到两个不同的UID时,我感到非常恐慌。我在我的生产和开发环境中使用了2个不同的应用程序ID,并认为ID可能会随时间而改变。但实际上是因为我在SDK初始化时设置了2个不同的应用程序ID。你可能不是专家,但你肯定做得很好! :) - Matias
@Matias 很高兴能够帮忙 :) - Trapsilo Bumi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接