根据文档我可以配置并将Facebook ID存储到FOSUserBundle实体用户
我也希望存储生日和性别。
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字段一起存储。
答案 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' ;
}