Facebook Connect 文档相当有限。它并没有真正告诉你它在做什么,而只是告诉你如何去做。我个人不使用任何一个 SDK。我已经为我的开发项目构建了自己的框架。
本教程中的 SDK 和 JavaScript 都已过时,IMO。
如果您想坚持使用其中一种 FB SDK,我的建议是。仅当您的 Graph API 查询等通过 Ajax 发送到 PHP 后端时,才使用 JS SDK。否则坚持使用 PHP SDK。
简介
Facebook 使用 oAuth v2。他们描述了两种不同的流程方法……服务器端和客户端。这将与针对 oAuth v2 服务进行身份验证的任何其他应用程序一样实现。他们都做同样的事情。唯一的区别可能是您可以使用 'code' 作为 request_type 来获取授权码,以便将来获取令牌。
身份验证
就 FB Connect 而言,您的脚本需要确保在需要身份验证时拥有身份验证令牌或身份验证代码。如果你没有,那么你需要得到它。您可以使用身份验证代码或令牌的存在作为显示 FB 按钮(登录或注销)的条件。
将用户重定向到 oAuth 进行身份验证。 Facebook 将他们的 oAuth 实现捆绑到他们的对话 API 中。有关 oAuth 对话框的更多信息,请点击此处:http://developers.facebook.com/docs/reference/dialogs/oauth/
您可以将可选的状态参数用于诸如 CSRF 保护之类的东西。它在处理后保留它的值,并与回调一起作为 GET 参数发送。
应用程序交互
基本上,您将按照通常的方式编写应用程序。区别在于:
- 您的用户数据库不再存储密码,只存储 FB UID。此外,根据 FB Dev ToS,您确实无法存储任何用户信息。如果要存储用户信息,则需要从用户那里获取。您可以使用 FB 信息为他们填充此信息,您只需要他们提交即可。
- 您的注册方法将不再有表单前端发布。当经过身份验证的用户在数据库中没有条目时将调用它。
API 交互
如果您使用代码而不是令牌,则需要通过发送代码来请求令牌。这是通过 Graph API oauth 完成的。除了在他们的身份验证教程中之外,这部分根本没有记录。 http://developers.facebook.com/docs/authentication/
使用您的访问令牌,无论您使用哪种方法获取它。您现在可以根据需要查询 Graph API。这将返回一个 JSON 编码的对象。
结论
就快速且安全的实施而言,Facebook PHP SDK 可以胜任。它处理我在这里介绍的所有内容,包括 CSRF。如何去学习它,我还没有找到合适的文档。要么一切都过时,要么作者并不真正了解,并且正在停止使用其他教程。
最好的办法是深入研究这些库并弄清楚它是如何为自己工作的。做一些试验和错误,实验。
我学习的方式是为它编写自己的框架。我建议你这样做。如果您愿意,可以扩展 Facebook SDK 类。它确实是有限的,但它可以为您提供所需的一切。我将最常用的 API 调用也放入其中。我现在有一个从我的库驱动的非常快速和简单的最终结果。