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

时间:2012-03-26 16:42:51

标签: facebook

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:6)

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

当使用Facebook登录来验证用户时,您的数据库中的用户注册不包含密码,您只有facebookid将Facebook帐户与您网站的个人资料相关联。可以使用服务器端FB.login方法提供的accesstoken或通过javascript(例如facebook docs的下一个示例)获取facebook 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.');
 }
});

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

答案 1 :(得分:3)

如果您查询图谱API https://graph.facebook.com/me?access_token=USER_ACCESS_TOKEN,您将获得UID,然后与您的数据库进行比较。 您正在使用Javascript API,因此您应该使用FB.getLoginStatus方法来获取已连接用户的UID。

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

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

https://developers.facebook.com/docs/reference/javascript/FB.init/

答案 2 :(得分:1)

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

相关问题