我正在尝试使用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'] 但该用户不存在。
我应该在尝试对他/她进行身份验证之前创建用户吗?