2017-02-07 3 views
0

В данном блоке существует $ ответ переменной https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/internals/response_object_and_paths.mdHWIOAuthBundle Как получить данные пользователя в контроллере?

, но я не понимаю, как $ ответ пришел к контроллеру.

Помогите, пожалуйста! Приведите пример, пожалуйста!

ответ

1

Вы должны реализовать собственный пользовательский провайдер, который будет использовать HWIOAuthBundle для загрузки данных пользователя (аналогично, например, если вы хотите загрузить пользователей из собственной таблицы SQL, например).

Вот хороший пример: https://gist.github.com/danvbe/4476697

И документ в Symfony в How to Create a custom User Provider

EDIT

Контроллер не имеет доступа к UserResponseInterface HWIOAuthBundle, ваш UserProvider делает, так что если вы хотите получить доступ к realName пользователя в контроллере, вы должны сделать это через пользовательский объект.

поставщик Пользователь:

... 
public function loadUserByOAuthUserResponse(UserResponseInterface $response) 
{ 
    $userEmail = $response->getEmail(); 
    $user = $this->userManager->findUserByEmail($userEmail); 

    // if null just create new user and set it properties 
    if (null === $user) { 
     $realName = $response->getRealName(); 
     $user = new User(); 
     $user->setRealName($realName); 
... 

Контроллер:

... 
public function defaultAction(Request $request) 
{ 
    $this->getUser()->getRealName(); 
... 
+0

спасибо. Я использую этот пример, но я не понимаю, как я могу использовать getRealName(); в defaultController. Какие файлы следует подключать? Я буду очень признателен за использование методов пучка контроллеру – Alexander

+0

благодаря @ honza-rydrych но есть ли запрос к api, даже если мы не вызываем метод getRealName()? , например, мы называем $ this-> GetUser() -> getEmail() (из базы данных) и в то же время есть запрос на API социальной сети это решение не очень эффективно :( – Alexander

+0

Я думаю, что мы говорим о разных вещах. Одна вещь, когда вам нужно аутентифицировать пользователя, вы должны извлекать данные из того, где они есть (sqlDB или API социальной сети), и предоставлять эти данные безопасности Symfony - это нужно сделать провайдер, и это то, что я описал выше. Другое дело, когда вы хотите играть с oAuth непосредственно в действии контроллера, тогда есть хороший пример в репозитории HWIOAB: https://github.com/hwi/HWIOAuthBundle/ блоб/ведущий/контроллер/ConnectController.php –

Смежные вопросы