0

我很难理解Facebook在与用户登录时如何与我的服务器通信(在批准我的Facebook应用程序后)。我一直在寻找通过指南和其他Stackoverflow问题几个小时,但似乎无法得到它的挂钩。关于http://developers.facebook.com/的文档也不是很有帮助。Facebook登录基础知识

我想要做的是在我的页面上打开Facebook登录按钮,该按钮打开Facebook登录窗口(使用Facebook的Javascript SDK)。当用户登录Facebook并批准我的应用程序时,我想获取用户的数据(姓名,电子邮件,年龄)并将其存储在我的数据库中。我如何获得这些数据,安全(服务器端确认/授权)?

基本上按照这个顺序;

  • 用户点击登录按钮,在我的网站
  • 弹出显示,用户可以登录&批准的应用程序在Facebook上
  • 检查,如果用户在通过获取已经登录前用户的USER_ID
  • 如果这是用户第一次登录,用户的Facebook数据(具体是:全名,照片,的电子邮件地址,年龄)是由我收集并保存在我的数据库

后,用户在Facebook弹出窗口中记录/批准应用程序,然后发送用户数据到哪里?

回答

1

用户批准该应用后,用户的数据不会发送到任何地方。您需要进行API调用才能检索数据。

Facebook是OAuth供应商。您使用Facebook登录,以便用户可以授予您访问她的Facebook数据的权限(例如电子邮件,好友列表,消息,新闻提要等)。您还可以获取代表用户采取操作的权限(例如上传照片,发布到新闻Feed等)。在启动OAuth流程时,您可以指定要向用户请求哪些权限。这些被称为示波器

在弹出窗口中发生的授权流程为用户授予访问您请求的数据的权限。此权限表示为访问令牌,您每次想要检索用户数据或尝试代表用户执行某些操作时都必须使用该权限。

一旦你有访问令牌,你可以使用Facebook Graph API从Facebook获取你想要的任何数据。如果您尝试访问某些未获得许可的数据,则API方法将返回拒绝访问错误。

我想给有关从Facebook的开发者网站的范围和访问令牌一些联系,但我的名誉分数太低:)

+0

所以我想要做的就是发送访问令牌,这是我得到使用Facebook的JS SDK,通过例如AJAX请求发送到我的服务器,然后使用该访问令牌来执行我的注册/验证?这有多安全,访问令牌有效多久? – Unidan

+1

@WillB这是正确的。您可以在[Facebook开发人员网站]上找到有关访问令牌的详细信息(https://developers.facebook.com/docs/facebook-login/access-tokens/)。 您使用SSL提出请求,所以我会说他们非常安全。 只需浏览Facebook Developers网站上的文档。它非常全面。 –

+0

现在这一切都很有意义,我感到非常愚蠢,因为没有立即理解它。我一直在以完全错误的方式看待它。谢谢! – Unidan