Symfony2.1 - HWIOAuthBundle и аутентификация google oauth

Я пытаюсь настроить 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'], но этого пользователя там нет.

Должен ли я создавать пользователя, прежде чем я попытаюсь его / ее аутентифицировать?


person mrok    schedule 04.09.2012    source источник


Ответы (2)


К сожалению, HWIOAuthBundle по умолчанию не поддерживает автоматическую регистрацию. Если вы хотите войти в систему сейчас, вам придется создать пользователя вручную.

person beliveyourdream    schedule 19.09.2012

Как сказано в beliveyourdream ... HWIOAuth НЕ обеспечивает автоматическую регистрацию пользователей. Вам нужно создать своего собственного провайдера пользователей и использовать его. Я предлагаю вам использовать FOSUserBundle, поскольку он выполняет большую часть работы и довольно хорошо интегрирован в HWIOAuth. Чтобы узнать, как настроить (так как для их подключения требуется немного поработать), используйте этот Gist . Он настраивает ваше приложение как с регистрацией пользователя с использованием данных от ПРОВАЙДЕРОВ (gacebook, google, github и т. Д.), Так и с подключением к учетной записи (уже зарегистрированный пользователь может подключить свою учетную запись с учетными записями от ПРОВАЙДЕРОВ). Кроме того, после создания / подключения пользователи смогут подключиться к вашему сайту с учетными данными ПРОВАЙДЕРОВ (да ... это все-таки OAuth).

person Sergiu Dan Petru Barbus    schedule 20.01.2013