Facebook graph api 自动验证使用Facebook(ZF2)登录的用户

Facebook graph api 自动验证使用Facebook(ZF2)登录的用户,facebook-graph-api,authentication,zend-framework2,zfcuser,Facebook Graph Api,Authentication,Zend Framework2,Zfcuser,我正在ZF2应用程序中使用ZfcUser。我想做的是允许一个人使用Facebook进行身份验证。Facebook身份验证部分工作正常:我从Graph API请求登录URL,重定向用户登录并请求权限,Facebook重定向回我的重定向URL,然后我可以获取Facebook会话对象并检索用户信息 我希望它能像这样工作: -如果电子邮件地址在我的数据库中不作为用户存在,我将创建该用户,并希望使用该本地用户配置文件自动登录。 -如果数据库中已经有一个用户具有该电子邮件地址,我希望以该用户身份登录,而无需

我正在ZF2应用程序中使用ZfcUser。我想做的是允许一个人使用Facebook进行身份验证。Facebook身份验证部分工作正常:我从Graph API请求登录URL,重定向用户登录并请求权限,Facebook重定向回我的重定向URL,然后我可以获取Facebook会话对象并检索用户信息

我希望它能像这样工作: -如果电子邮件地址在我的数据库中不作为用户存在,我将创建该用户,并希望使用该本地用户配置文件自动登录。 -如果数据库中已经有一个用户具有该电子邮件地址,我希望以该用户身份登录,而无需进行身份验证

\Zend\Authentication\AuthenticationService(由ZfcUser使用)有一个getIdentity()方法来检索当前标识。它还有一个带有适配器参数的authenticate方法来执行身份验证。没有setIdentity()方法,所以我猜我必须创建一个自定义身份验证适配器,并使用它来登录使用Facebook登录的用户。这是真的还是有更简单更好的方法

编辑: 这确实有效:

$authService = $this->getServiceLocator()->get('zfcuser_auth_service');
$user = ...
$authService->getStorage()->write($user);
虽然看起来有点脏,但我不确定是否有更干净的方法?

不要重新发明轮子;)


在做某事之前,最好先检查一下

谢谢。是的,我也看过这个模块。当我想添加不同类型的社交登录时,我会仔细研究一下。例如,我不确定该模块是否能够与本地用户配置文件协作。现在,我将使用我的解决方案,因为它正是我想要它做的。