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

如何识别通过Facebook api登录的用户?,facebook,Facebook,有一件事我不明白 在我的网站上,有一个来自facebook的api JS SDK的带有FB.login方法的按钮 当用户第一次访问我的网站时,单击按钮-从他的facebook个人资料中获取一些数据,然后我们将在数据库中的我的服务器上检查是否有具有此id的用户?如果否-写入新行。我们还在我的网站上创建用户的个人资料 现在的问题是,当用户下次访问我们的网站时(如果他没有登录,点击一个按钮),如何识别他以与我们网站上的个人资料相结合?例如,向他显示他的个人资料,或者他可以更改其中的任何内容 在通常的授

有一件事我不明白

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

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

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

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


在这种情况下使用了哪些技巧?

您可以使用Facebook ID来识别数据库中的用户,这对于每个Facebook用户都是唯一的。

如果查询Graph API,您将获得UID,然后与数据库进行比较。 您使用的是Javascript API,因此应该使用FB.getLoginStatus方法为连接的用户获取UID

默认情况下,使用FB.init初始化SDK时会运行此方法(状态:true)。它使您的站点能够识别已连接的用户


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

使用facebook登录对用户进行身份验证时,数据库中的用户注册不包含密码,您只有facebookid将facebook帐户与您网站的配置文件相关联。facebook id可以使用服务器端的FB.login方法提供的accesstoken或通过javascript获得,如下面的示例所示


在response对象中,您可以获得facebook id(response.id)。

有人可以替换此id进入该用户在我的网站上的id档案吗?尝试通过获取其状态来识别该用户,用户体验将通过个性化内容得到极大改善。
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.');
 }
});