У меня проблема с HWIOAuthBundle и аутентификацией Google, я не могу завершить работу над OAuthProvider. После данных флеша я хочу объект объекта возврата, который я видел где-то в stackoverflow. Но когда я возвращаю $ obj; я ловлю ошибку:HWIOAuthBundle прослушиватель полная работа
Catchable Ошибка: Аргумент 2 передается HWI \ Bundle \ OAuthBundle \ Security \ ядра \ Authentication \ маркеров \ OAuthToken :: __ конструкт() должен быть массив типа, целое данное, называется в/вар/WWW/Integra/поставщик/HWI/OAuth-расслоение/Безопасность/Основной/Authentication/Поставщик/OAuthProvider.php на линии 109 и определил
Построить этот класс:
public function __construct($accessToken, array $roles = array())
{
parent::__construct($roles);
$this->setRawToken($accessToken);
parent::setAuthenticated(count($roles) > 0);
}
Тогда я вернуться:
return new JsonResponse(['accessToken' => $user->getToken(), 'Roles' => $user->getRoles()]); // I catch error what it loadUserByOAuthUserResponse() must return a UserInterface
класс OAuthProvider расширяет OAuthUserProvider {
protected $container, $em;
public function __construct(\Doctrine\ORM\EntityManager $em, $container)
{
$this->container = $container;
$this->em = $em;
}
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
$email = $response->getEmail();
if ($email === null) {
throw new NotFoundHttpException("User email adress not found", 404);
}
$name = $response->getFirstName();
$surname = $response->getLastName();
$photo = $response->getProfilePicture();
$repository = $this->em->getRepository('IdamasBillingBundle:User');
$user = $repository->searchByNameSurnameEmail($email);
if($user){
$login = new User();
$login->setEmail($email);
$session = $this->container->get('session');
$session->set('login', $login);
return $user;
} else {
$user = new User();
$user->setEmail($email);
$user->setName($name);
$user->setSurname($surname);
$user->setPosition('Just user');
$user->setRoles(1);
$user->setPhoto($photo);
$this->em->persist($user);
$this->em->flush();
$session = $this->container->get('session');
$session->set('login', $user);
// return $user;f
return new JsonResponse(['accessToken' => $user->getToken(), 'Roles' => $user->getRoles()]);
}
//return new RedirectResponse("/billing");
}
}
Как я могу сделать это, что перенаправление на страницу входа заполнить?
'$ user-> setRoles ([]);' – malcolm
функция setRoles государственной ($ ролей) { $ this- > role = $ role; return $ this; } –
И вы устанавливаете роли в '1', это целое! Роли должны быть массивом в вашем объекте 'User',' getRoles' должен возвращать массив, чтобы добавить роль в метод 'addRole()', также почему вы создаете нового пользователя, если пользователь существует? – malcolm