Zend framework2 获取用户';使用SocalNick/ScnSocialAuth进行身份验证后的s配置文件数据

Zend framework2 获取用户';使用SocalNick/ScnSocialAuth进行身份验证后的s配置文件数据,zend-framework2,user-profile,hybridauth,Zend Framework2,User Profile,Hybridauth,我有一个ZF2项目,我正在使用SocalNick/ScnSocialAuth()来启用社会身份验证 身份验证流程正常。我已经使用用户的社交登录(例如,Facebook)对其进行了身份验证 现在我需要知道如何从控制器和视图访问用户的配置文件数据。我怀疑它一定是使用了HybridAuth模块(该模块也已加载),但我不知道如何使用 有人能帮我吗?在用户注册时访问该数据的两种可能方法: 您可以将事件侦听器附加到,它将HybridAuth适配器作为参数接收。实现这一点的最简单方法是在模块的引导过程中附加它

我有一个ZF2项目,我正在使用SocalNick/ScnSocialAuth()来启用社会身份验证

身份验证流程正常。我已经使用用户的社交登录(例如,Facebook)对其进行了身份验证

现在我需要知道如何从控制器和视图访问用户的配置文件数据。我怀疑它一定是使用了HybridAuth模块(该模块也已加载),但我不知道如何使用


有人能帮我吗?

在用户注册时访问该数据的两种可能方法:

您可以将事件侦听器附加到,它将HybridAuth适配器作为参数接收。实现这一点的最简单方法是在模块的
引导过程中附加它,如下所示:

$sem = $e->getApplication()->getEventManager()->getSharedManager();
$sem->attach('ScnSocialAuth\Authentication\Adapter\HybridAuth', 'registerViaProvider', function($event) {
    $provider = $event->getParam('provider');
    // $provider is the HybridAuth provider the user authenticated
});
然后提取用户的配置文件数据并将其存储在某处


另一种可能性是:SCNSocialoth的HybridAuth适配器(
SCNSocialoth\Authentication\adapter\HybridAuth
)为每个受支持的服务实现一种方法,因此,您可以覆盖ZfcUser的实体以添加一些额外的字段,然后扩展HybridAuth适配器类以覆盖这些方法中的每一个,并用必要的配置文件数据填充ZfcUser实体。

Adam Lundrigan提出的解决方案是可以的。但是还有一个我想在这里注册的

可以通过控制器的操作调用以下代码:

    $hybridAuth = $this->getServiceLocator()->get('HybridAuth');
// if the user is connected, authenticate will return an instance of the provider adapter
$adapter = $hybridAuth->authenticate('facebook');
if (!$adapter->isUserConnected()) {
    // do something sensible for a logged out user...
    return $this->redirect()->toRoute('some-logged-out-route');
}
$userProfile = $adapter->getUserProfile();

我要感谢Nicholas Calugar向我展示了这个替代解决方案。

你好,亚当·伦德里根。谢谢你的回答。一旦我尝试了这两个建议,我就会给出反馈。