我正在制作一个与Facebook合作的网站。我看到了人们连接Facebook的几种方式。我不知道怎么搞混了。据我所知,我可以通过以下方式使用Facebook进行身份验证:
- 使用"fb:login-button"并在Facebook完成其工作后,重定向或刷新我的页面,并从Facebook .php创建一个新实例,以便获得当前用户和其他。
- 仅使用SDK并从中创建一个新实例并生成LoginUrl和LogOutUrl,用户登录后,继续像我们在第一个中所做的那样。
ps1:我在这里写的方法,是我可以使用Facebook SDK的所有方法吗?ps2:我很困惑,因为我不会编程!我不能决定的是我要走的路,将来会支持我想要的一切!!
Facebook身份验证使用OAuth。您列出的两个选项都使用这种机制,唯一的区别是选项一使用Facebook的Javascript SDK,而第二个使用Facebook的PHP SDK。我想说,你的选择取决于你是喜欢使用PHP还是JS与Facebook交互。
至于如何集成,如果您使用PHP SDK,我建议创建一个控制器插件,在其中调用SDK上的getUser()方法。如果用户已登录,SDK将返回用户数据,否则返回null。然后,如果设置了这个用户对象,您可以将它与注销URL一起分配给视图。如果没有,你可以指定登录URL,并在你的应用程序中适当的地方添加一个登录链接。
类似以下语句的内容:
class Your_Plugin_Login extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$facebook = Zend_Registry::get('facebook');
$user = $facebook->getUser();
if ($user) {
// assign the user object to the view for easy access later
$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
$view->user = $user;
$view->logoutUrl = $facebook->getLogoutUrl();
} else {
$view->loginUrl = $facebook->getLoginUrl();
$view->user = false;
}
}
}
(此代码假设Facebook SDK在注册表中存储为' Facebook ',并且您正在使用Zend_Layout。)
为了获得额外的积分,您可以将用户数据存储在Zend_Auth中,如果您已经在您的站点上使用Zend_Auth进行标准登录,这将特别方便。
作为替代路线,Chris Weber写了一个不错的(如果不是完全完成)OAuth2/Zend_Service_Facebook实现,你可以在这里找到:https://github.com/chrisweb/oauth-2---facebook---zend-framework-components/blob/master/README但我最终放弃了这个,而是在标准SDK周围写了一个zf友好的包装器。