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

Str*_*Hat 1 facebook symfony fosuserbundle hwioauthbundle

根据文档,我能够为FOSUserBundle实体用户配置和存储Facebook ID

我也想存储生日和性别.

应用程序/配置/ 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"
Run Code Online (Sandbox Code Playgroud)

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

我在哪里可以获得包含所有本地数据的facebook响应.

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

ste*_*nll 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"
Run Code Online (Sandbox Code Playgroud)

然后在您的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']);
Run Code Online (Sandbox Code Playgroud)

由于Facebook发送性别的名义价值,我已经创建了该setGender功能.

private function setGender($gender) {
    return ($gender === 'male') ? '1' : '0' ;
}
Run Code Online (Sandbox Code Playgroud)