Я пытаюсь настроить Symfony2.1 с помощью HWIOAuthBundle для обработки аутентификации Google oauth.
Я выполнил инструкции, приведенные в описании комплекта, но чего-то не хватает. Когда я посещаю действие, для которого требуется аутентифицированный пользователь (или просто набираю url / connect / google), я перенаправляюсь на страницу аутентификации Google - эта часть работает. Но после перенаправления обратно (после входа в Google и согласия на совместное использование моих данных) новый пользователь не создается в БД, и я перенаправляюсь на действие подключения / сбоя. Аутентификация Google должна быть только одним способом аутентификации пользователя. Есть идеи, что может быть не так?
Это моя маршрутизация:
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
google_login:
pattern: /login/check-google
security.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
login_path: /connect/google
check_path: /login/login_check
logout: true
anonymous: true
oauth:
resource_owners:
google: "/login/check-google"
login_path: /connect/google
failure_path: /connect-fail
# FOSUB integration
oauth_user_provider:
service: hwi_oauth.user.provider.fosub_bridge
и конфиг
hwi_oauth:
firewall_name: secured_area
resource_owners:
google:
type: google
client_id: ....
client_secret: ......
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
fosub:
username_iterations: 5
properties:
google: googleId
google redirectURL
http://xxxx/login/check-google
мой пользовательский объект:
class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var integer $id
*
* @ORM\Column(name="google_id", type="integer")
*/
protected $googleId;
// редактировать- обновить
Я только что обнаружил в журналах Symfony, что у меня был один запрос от перенаправления google: GET : //xxxxx.dk/login/check-google? code = 4% 2F8tiDAhI45D2g7BvrdtwoF7wJ.Eu7i2fmkYOl05ti8ZT3YDrXXXXXfakeXXXE4hcwI незадолго до перенаправления на / connect-файл, мой db, похоже, попытался получить этот запрос от пользователя. google_id ВЫБРАТЬ * FROM app_user t0 ГДЕ t0.googleId =? LIMIT 1: ['123456789'], но этого пользователя там нет.
Должен ли я создавать пользователя, прежде чем я попытаюсь его / ее аутентифицировать?