1

根据文档,我能够配置 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 字段一起存储。

4

1 回答 1

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' ;
}
于 2014-11-11T15:33:27.130 回答