我正在尝试使用HWIOAuthBundle设置Symfony2.1来处理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;
// edit- update
我刚在Symfony日志中发现我有一个来自谷歌重定向的请求: 在重定向到/ connect-file之前获取http://xxxxx.dk/login/check-google?code=4%2F8tiDAhI45D2g7BvrdtwoF7wJ.Eu7i2fmkYOl05ti8ZT3YDrXXXXXfakeXXXE4hcwI 不幸的是,它看起来请求只尝试基于google_id从我的数据库中检索用户 SELECT * FROM app_user t0 WHERE t0.googleId =?限制1:['123456789']但那个用户不存在。
我应该创建用户befor我试图验证他/她吗?
答案 0 :(得分:5)
正如beliveyourdream所说...... HWIOAuth不为您提供自动用户注册。您需要创建自己的用户提供程序并使用它。我建议您使用FOSUserBundle,因为它完成了大部分工作,并且很好地集成在HWIOAuth中。有关如何设置(因为连接它们需要做一些工作),请使用此Gist。它使用来自PROVIDERS(gacebook,google,github等)的数据和帐户连接(已经注册的用户可以将他/她的帐户与来自PROVIDERS的帐户连接)进行用户注册,从而设置您的应用程序。此外,在创建/连接时,用户将能够使用PROVIDERS的凭据连接到您的站点(毕竟......毕竟是OAuth)。
答案 1 :(得分:4)
可悲的是,HWIOAuthBundle默认不处理自动注册。如果您现在要登录,则必须手动创建用户。