如何在收到response.status ==='connected'后验证Facebook用户?

时间:2013-08-23 14:09:50

标签: facebook api login

也许我会以错误的方式解决这个问题,但我有一个允许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对象传递给服务器并确认此用户标识在我以这个用户身份登录之前使用此令牌

  5. 我已阅读过简单地抓取 -

    的json内容
      

    https://graph.facebook.com/ {用户ID}?的access_token = {}的accessToken

    如果它没有返回错误,那就好了!但是在测试这个方法时,我注意到相同的access_token适用于两个不同的用户ID(这意味着它没有为我的计算机上没有登录的用户ID返回错误)。相反,它返回了具有名称,位置等的facebook用户对象。

    这让我感到很惊讶,正如我所期望的那样access_tokenwork only with a single user id。

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

    证明,请转到这些链接以查看个人资料信息

    我的个人资料 -

      

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

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

      

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

1 个答案:

答案 0 :(得分:0)

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

如果您希望通过服务器端授权,请通过。this链接