3

我正在尝试使用HWIOAuthBundle设置 Symfony2.1来处理 google oauth 身份验证。

我已按照捆绑描述中的手动说明进行操作,但仍然缺少某些内容。当我访问需要经过身份验证的用户(或仅输入 url /connect/google)的操作时,我被重定向到 google 身份验证页面 - 这部分正在工作。但是在重定向回来之后(在登录到谷歌并同意共享我的数据之后)新用户没有在数据库中创建,我被重定向到连接/失败操作。Google 身份验证应该只是验证用户身份的一种方式。知道有什么问题吗?

这是我的路由:

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /connect

google_login:
    pattern: /login/check-google

安全.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

谷歌重定向网址

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 http://xxxxx.dk/login/check-google?code=4%2F8tiDAhI45D2g7BvrdtwoF7wJ.Eu7i2fmkYOl05ti8ZT3YDrXXXXXfakeXXXE4hcwI就在重定向到 /connect-file 之前
不幸的是,它看起来是那个请求仅尝试根据 google_id SELECT * FROM app_user t0 WHERE t0.googleId = 从我的数据库中检索用户?限制 1:['123456789'] 但该用户不存在。

我应该在尝试对他/她进行身份验证之前创建用户吗?

4

2 回答 2

6

正如beliveyourdream所说... HWIOAuth 不为您提供自动用户注册。您需要创建自己的用户提供程序并使用它。我建议您使用FOSUserBundle,因为它完成了大部分工作,并且很好地集成到了 HWIOAuth 中。关于如何设置(因为连接它们需要做一些工作),请使用这个Gist。它使用来自提供者(gacebook、google、github 等)的数据和帐户连接(已经注册的用户可以将他/她的帐户与来自提供者的帐户连接)来设置您的应用程序。此外,在创建/连接后,用户将能够使用提供者的凭据连接到您的站点(呃……毕竟是 OAuth)。

于 2013-01-20T12:32:15.870 回答
4

遗憾的是,默认情况下 HWIOAuthBundle 不处理自动注册。如果您想现在登录,则必须手动创建用户。

于 2012-09-19T09:25:52.407 回答