2012-12-10 66 views
2

我使用HWIOAuthBundleFOSUserBundle成功。使用HWIOAuthBundle自動註冊用戶

當我轉到/login頁面時,它會將我重定向到Google帳戶,授權並返回到填充數據(密碼字段除外)的註冊表單。

是否可以使用省略寄存器形式自動註冊用戶?

在這種情況下,我們不需要密碼,因爲使用Google帳戶進行身份驗證。

我應該如何實現這種情況?

+0

您是否使用FOSUBUserProvider或一些定製服務,以重定向到註冊頁面?你能解釋一點嗎?我無法重定向到註冊頁面。 – pregmatch

回答

11

的問題是有點老了,不過還好後來比從不。

您只需創建一個自定義提供程序 - 如果要將該軟件包與FOSUserBundle集成,則需要覆蓋FOSUBUserProvider類。

HWIOAuthBundle/Security/Core/User目錄中,您可能會發現開箱即用的OAuthBundle中的所有提供程序。

要創建新用戶,而連接您只需重寫FOSUBUserProvider(或EntityUserProvider等)提供程序類的loadUserByOAuthUserResponse()方法。如您所見,如果在數據庫中找不到用戶,則默認方法會引發異常,您只需調用userManager並創建新條目即可。

這與FOSFacebookBundle整合(如果您這樣做)完全相同。

希望這個答案可以幫助你(特別是它可能聽起來有點混亂)。

編輯:
我已經貼了blog post解釋一體化進程。

+0

謝謝Andrzej,我還有很多其他的工作要做,所以我仍然沒有做,所以你的回答可能會有所幫助。 – hsz

+0

@hsz看看Github的這個參考頁面(https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/reference_configuration.md)它可以給你更多關於這個包的工作方式的知識(和它的工作完美)。 –

+0

@AndrzejOśmiałowski上面的鏈接已損壞可以提供新的 – Hunt

-4

當然可以。

你應該處理來自谷歌的迴應,並授權用戶manualy類似:

// authorize 
$token = new OAuthToken(null, $user->getRoles()); 
$token->setUser($user); 
$token->setAuthenticated(true); 

// update session 
$session = $this->getContainer()->get('session'); 
$session->set('_security_secured_area', serialize($token)); 
$session->save(); 

用戶後,授權用戶重定向到調用頁面

+0

這種情況下,ommits創建新用戶。我不知道如何從這一點創建它。 – hsz

+1

這不是@OP在我的愚見中所要求的。不知道爲什麼這個答案被標記爲正確的說實話;) – user1854344

+0

這不是OP要求的。發佈的代碼只創建一個令牌並將其存儲在會話中,而不是持久性。 –

1

有一個良好的步行通過關於如何整合HWIOAuthBundle和FOSUserBundle在這裏實現自動用戶註冊更新,這可能是值得一讀:

https://gist.github.com/danvbe/4476697