Facebook Graph API - 用户ID是否唯一?

时间:2016-06-01 03:51:25

标签: javascript facebook facebook-graph-api

我正在尝试找出一种在我的应用中为用户存储唯一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;
    }
}

基本上,我有角度处理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 个答案:

答案 0 :(得分:10)

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

  

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

只要App ID相同,即使在登录之间,用户ID也不会改变,无论中间有多长。

  

次要问题是,如果/当我进行更改并获得新的应用ID时,ID是相同还是更改?

新的App ID表示不同的App,这意味着用户ID将会更改。但是,如果您获得新的应用程序ID并需要访问同一个用户,则可以使用Facebook的Business Mapping API

摘自facebook文档:

  

如果您需要在多个应用中映射相同的用户ID或运行跨应用促销,我们已添加了一个名为Business Mapping API的新API。这使您可以跨应用程序映射登录用户的ID,只要这些应用程序全部归同一个企业所有。