Facebook登录后,HWIOAuthBundle获得生日,性别

时间:2014-11-11 11:30:55

标签: facebook symfony fosuserbundle hwioauthbundle

根据文档我可以配置并将Facebook ID存储到FOSUserBundle实体用户

我也希望存储生日和性别。

的应用程序/配置/ config.yml

hwi_oauth:
    firewall_name:         secured_area
    resource_owners:
        facebook:
            type:          facebook
            client_id:     <client_id>
            client_secret: <client_secret>
            scope:         "email,user_birthday"

在文档中有一些描述Here,但我无法让它工作。因为我是初学者,这篇文档对我没有帮助。

我在哪里可以获得包含所有本地数据的Facebook回复。

我还需要将这些数据与其他FOSUserBundle字段一起存储。

1 个答案:

答案 0 :(得分:9)

您的配置如下所示:

facebook:
    type:          facebook
    client_id:     %client_id%
    client_secret: %client_secret%
    scope:         "email, basic_info, user_birthday"
    infos_url:     "https://graph.facebook.com/me?fields=id,email,first_name,last_name,gender,birthday"

然后在您的AccountConnector服务/或您处理回复的方式上,您可以执行以下操作:

$data = $response->getResponse();
//check if all fields are set 
...
$user->setLastname($data['last_name']);
$user->setBirthdate(new \DateTime($data['birthday']));
$user->setGender($this->setGender($data['gender']));
$user->setEmail($data['email']);

由于Facebook发送性别名义价值,我创建了setGender函数。

private function setGender($gender) {
    return ($gender === 'male') ? '1' : '0' ;
}