0

也许我的做法是错误的,但我有一个允许 facebook 登录的网站。

  1. 如果用户已经在我的网站上注册
  2. 并已登录 facebook 但未登录我的网站
  3. 访问登录页面时,我会检查他们的 Facebook 登录状态并response.status === 'connected'通过-

    FB.Event.subscribe('auth.authResponseChange', function (response) 
    {
        if (response.status === 'connected') 
        {
            var s = JSON.stringify(response.authResponse);
            LogMeIn(s, function(response) 
            {
                HandleAjaxError(response, function(msg)
                {
                    window.location = '/_/';  
                });
            });
        }
     }
    
  4. 然后,我想将他们的 authResponse 对象传递给服务器,并在我以该用户身份登录之前确认此用户 ID 与此令牌一起使用

我已经阅读了简单地获取 json 内容 -

https://graph.facebook.com/ {userID}?access_token={accessToken}

如果它没有返回错误,那很好!但是在测试此方法时,我注意到相同的 access_token 对两个不同的用户 ID 有效(这意味着它没有为未在我的计算机上登录的用户 ID 返回错误)。相反,它返回了带有 name 、 location 等的 facebook 用户对象。

正如我所期望的那样,这真的让我感到access_token惊讶work only with a single user

为了防止有人在继续执行脚本之前简单地更改用户 ID,我需要通过服务器端进行身份验证。有什么方法可以做到这一点?

证明,去这些链接查看个人资料信息

我的简历-

https://graph.facebook.com/1233822590?access_token=CAACCBJJZBgjABAOGmvmsou8gMYGulLHTgAr5ZCHZAU7pKEp0cMAeX8r4qHLpiVuZCOT1v0ulMZAxX5YfLJkcZBr9l6qJQoPxWS5Fs5ndohDnH6ZAPPfZCZCTQtwWgAZAg6I1PAOIpdtCc0OUaMmBZAvGiMm9gQhmNXRbocZD

另一个具有相同 access_token 的用户 ID-

https://graph.facebook.com/100000116781159?access_token=CAACCBJJZBgjABAOGmvmsou8gMYGulLHTgAr5ZCHZAU7pKEp0cMAeX8r4qHLpiVuZCOT1v0ulMZAxX5YfLJkcZBr9l6qJQoPxWS5Fs5ndohDnH6ZAPPfZCZCTQtwWgAZAg6I1PAOIpdtCc0OUaMmBZAvGiMm9gQhmNXRbocZD

4

1 回答 1

0

没什么好惊讶的。您可以使用 facebook 的任何用户的访问令牌来获取 facebook 的任何用户的基本详细信息。所以这不是验证令牌的好方法。此外,不需要确认令牌部分。

如果您希望通过服务器端进行授权。这个链接

于 2013-08-23T19:47:50.967 回答