Facebook API - 每个应用程序的不同用户ID?

And*_*wby 9 facebook oauth.io

我目前正在开发移动应用程序,因此我需要专门为此目的使用新的应用程序.看起来很愚蠢的是,Facebook决定为每个应用程序使用不同的"用户ID".除了没有看到这一点上的重点,我感到困惑的是我如何为给定用户提取相同的userId,以便与我的数据库匹配.我正在使用oauth.io来处理登录,并返回值:

$('#facebook-login').click(function() {
    $('#ajax_spinner_wrapper').show();
    OAuth.initialize('CmRGYdnRMWM2ZrOb7M1Nf1_T57o');
    OAuth.popup('facebook').done(function(result) {
        //console.log(result)
        result.get('/me').done(function(data) {
            //todo with data
            console.log(data);

            $.post('https://steampunkjunkies.net/cgi-bin/mobi_login.cgi', { action: 'store_session', what: 'facebook', user: data.id }, function(result) {
                $('#ajax_spinner_wrapper').hide();
            });
        }).fail(function(err) {
            //todo with err
            console.log("Hit an error?");
        });


    })
    .fail(function (err) {
        alert("oops, we got an error!");
        console.log(err);
        $('#ajax_spinner_wrapper').hide();
    });

    return false;
});
Run Code Online (Sandbox Code Playgroud)

但问题是,它在每个应用程序中给出了完全不同的Id.以下是我基于网络的内容:

'id' => '838605583',
Run Code Online (Sandbox Code Playgroud)

..然后使用我的oauth.io(https://oauth.io)设置中的其他应用程序:

id  "10155167132970584"
Run Code Online (Sandbox Code Playgroud)

两者都是完全相同的用户.

有没有办法关联这些Id,所以我可以将它们匹配在一起?令人惊讶的是,Facebook并不认为这样的事情会成为一个问题!

注意:关于此更改,来自Facebook的一些信息:

https://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_user_ids

当人们首次登录针对API的v2.0编码的应用实例时,Facebook将开始发布应用范围的用户ID.使用应用范围的ID,同一用户的ID在不同应用之间会有所不同.

无论他们最初用于注册您的应用的版本如何,对于已登录您应用的用户,ID都将保持不变.对于在过去的任何时间点登录您的应用的任何人,此更改都是向后兼容的.

如果您没有跨应用程序映射ID,则不需要更改代码.如果您需要跨多个应用映射相同的用户ID或运行跨应用促销,我们添加了一个名为Business Mapping API的新API.这使您可以跨应用程序映射登录用户的ID,只要这些应用程序全部归同一企业所有.详细了解如何实施交叉促销.

对于尚未登录您应用的用户,用户ID可能会根据您调用的API版本而更改.在API的v1.0中,未登录到您的应用程序的用户将通过其原始Facebook用户ID引用,而在v2.0中,将通过应用程序作用域ID引用它们.

我们添加了新的API端点,允许您标记和邀请不使用您的应用的朋友.这些API返回令牌,可用于生成标记和邀请的自定义界面.这些令牌并不意味着可以缓存,我们无法保证它们在收到包含它们的API响应后24小时内保持稳定.它们与未登录到应用程序的人员使用的数据ID或应用程序范围ID相同.

用户可以在应用程序的"编辑设置"对话框中检查他们安装的每个应用程序的应用范围ID.确保您的应用用户在与您联系并提供支持查询时知道如何找到它

我真的没有得到他们的逻辑.为每个用户设置唯一标识符更有意义,可用于针对任意数量的应用程序进行验证.在我的情况下,有人登录我们的基于Web的应用程序,然后他们也想登录到移动应用程序 - 但它有一个不同的用户ID,所以没有办法将2连接在一起!Eugh

Tob*_*obi 12

嗯,这是一个非常古老的消息.自2014年4月30日以来就一直如此.随着图API API v2.0的推出,FB还推出了专为您的用例设计的Business Mapping API.

您将不会收到一个用户ID,但您将收到token_for_business:

这将返回一个字符串,该字符串对于此人在同一个业务经理管理的所有应用程序中是相同的.

看到