如何识别通过Facebook api登录的用户?

Den*_*nis 5 facebook

我无法理解一件事......

在我的网站上有一个带有来自facebook的api JS SDK的FB.login方法的按钮.

当用户第一次访问我的网站时,点击按钮 - 从他的Facebook的个人资料中获取一些数据,然后我们将在数据库中检查我的服务器是否有这个用户的用户?如果不是 - 写一个新行.我们还在我的网站上创建用户的个人资料.

现在问题是,当用户下次访问我们的网站时(并点击按钮,如果他没有登录) - 如何识别他与我的网站上的个人资料相结合?例如,向他展示他的个人资料,或者他可以改变其中的任何内容......

在通常的授权中,我们比较密码和用户在数据库中的登录,这里没有这种可能性.AccessToken一直在变化.以为只是检查用户的FB ID,但是,也许,任何人都可以替换他的FB ID,并输入他的个人资料,不是吗?

在这种情况下使用了什么技巧?

小智 6

无论用户是否第一次访问您的网站,您始终都使用FB.login方法.此方法验证用户是否与您的应用程序有关系,并在用户接受您的应用程序时为您提供访问令牌.

当使用Facebook登录来验证用户时,您的数据库中的用户注册不包含密码,您只有facebookid将Facebook帐户与您网站的个人资料相关联.可以使用服务器端FB.login方法提供的accesstoken或者通过javascript来获取facebook id,如下面的facebook docs示例.

FB.login(function(response) {
if (response.authResponse) {
   console.log('Welcome!  Fetching your information.... ');
   FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
   });
 } else {
   console.log('User cancelled login or did not fully authorize.');
 }
});
Run Code Online (Sandbox Code Playgroud)

在响应对象中,您可以获取facebook id(response.id).