2012-09-04 116 views
3

我想安裝Symfony2.1與HWIOAuthBundle來處理谷歌oauth身份驗證。Symfony2.1 - HWIOAuthBundle和谷歌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 

谷歌的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的日誌,我已經從谷歌一個請求重定向發現: GET http://xxxxx.dk/login/check-google?code=4%2F8tiDAhI45D2g7BvrdtwoF7wJ.Eu7i2fmkYOl05ti8ZT3YDrXXXXXfakeXXXE4hcwI之前重定向到/連接文件
不幸的是,它看起來該請求只試圖從我的數據庫中檢索用戶google_id SELECT * FROM app_user t0 WHERE t0.googleId =?限制1:['123456789']但該用戶在那裏不存在。

我是否應該創建用戶befor我試圖驗證他/她?

回答

4

不幸的是,HWIOAuthBundle默認不處理自動註冊。如果您想現在登錄,您必須手動創建用戶。

5

由於beliveyourdream說... HWIOAuth不會爲您提供自動用戶註冊。您需要創建自己的用戶提供商並使用它。我建議你跟FOSUserBundle一樣,因爲它可以完成大部分工作,而且它很好地集成在HWIOAuth中。關於如何設置(因爲連接它們需要做一些工作),請使用這個Gist。它可以通過使用來自PROVIDERS(glimin,google,github等)的數據進行用戶註冊和帳戶連接(已註冊的用戶可以將他/她的帳戶與來自PROVIDERS的帳戶相關聯)來設置您的應用程序。此外,創建/連接後,用戶將能夠通過PROVIDERS的憑據連接到您的網站(畢竟它是OAuth)。