Старый вопрос, но я работал над аналогичной проблемой.Я хотел добавить роль пользователю, когда он был зарегистрирован при первом подключении к Facebook.
Если вы подписаны на эти шаги из документации FOSFacebookBundle, то вы можете нажать наFacebook подключил пользователя "регистрация", взгляните на класс FacebookProvider
.
В методе loadUserByUsername
есть эта часть:
if (!empty($fbdata)) {
if (empty($user)) {
$user = $this->userManager->createUser();
$user->setEnabled(true);
$user->setPassword('');
}
$user->setFBData($fbdata);
...
После setPassword
в пределах ifвот где я добавил роль для своего пользователя.
Для вашей первоначальной проблемы выбора имени пользователя ... обратите внимание, что вызов setFBData
?
В сущности User метод выглядит следующим образом:
public function setFBData($fbdata)
{
if (isset($fbdata['id'])) {
$this->setFacebookId($fbdata['id']);
$this->addRole('ROLE_FACEBOOK');
}
if (isset($fbdata['first_name'])) {
$this->setFirstname($fbdata['first_name']);
}
if (isset($fbdata['last_name'])) {
$this->setLastname($fbdata['last_name']);
}
if (isset($fbdata['email'])) {
$this->setEmail($fbdata['email']);
}
}
и setFacebookId()
выглядит следующим образом:
public function setFacebookId($facebookId)
{
$this->facebookId = $facebookId;
$this->setUsername($facebookId);
}
Так вот откуда пришло имя пользователя.Я предполагаю, что это поток, в который вы можете вставить выбранное имя пользователя и установить его вместо $facebookId
.