我使用HWIOAuthBundle
和FOSUserBundle
成功。使用HWIOAuthBundle自動註冊用戶
當我轉到/login
頁面時,它會將我重定向到Google帳戶,授權並返回到填充數據(密碼字段除外)的註冊表單。
是否可以使用省略寄存器形式自動註冊用戶?
在這種情況下,我們不需要密碼,因爲使用Google帳戶進行身份驗證。
我應該如何實現這種情況?
我使用HWIOAuthBundle
和FOSUserBundle
成功。使用HWIOAuthBundle自動註冊用戶
當我轉到/login
頁面時,它會將我重定向到Google帳戶,授權並返回到填充數據(密碼字段除外)的註冊表單。
是否可以使用省略寄存器形式自動註冊用戶?
在這種情況下,我們不需要密碼,因爲使用Google帳戶進行身份驗證。
我應該如何實現這種情況?
的問題是有點老了,不過還好後來比從不。
您只需創建一個自定義提供程序 - 如果要將該軟件包與FOSUserBundle集成,則需要覆蓋FOSUBUserProvider類。
在HWIOAuthBundle/Security/Core/User目錄中,您可能會發現開箱即用的OAuthBundle中的所有提供程序。
要創建新用戶,而連接您只需重寫FOSUBUserProvider(或EntityUserProvider等)提供程序類的loadUserByOAuthUserResponse()方法。如您所見,如果在數據庫中找不到用戶,則默認方法會引發異常,您只需調用userManager並創建新條目即可。
這與FOSFacebookBundle整合(如果您這樣做)完全相同。
希望這個答案可以幫助你(特別是它可能聽起來有點混亂)。
編輯:
我已經貼了blog post解釋一體化進程。
當然可以。
你應該處理來自谷歌的迴應,並授權用戶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();
用戶後,授權用戶重定向到調用頁面
這種情況下,ommits創建新用戶。我不知道如何從這一點創建它。 – hsz
這不是@OP在我的愚見中所要求的。不知道爲什麼這個答案被標記爲正確的說實話;) – user1854344
這不是OP要求的。發佈的代碼只創建一個令牌並將其存儲在會話中,而不是持久性。 –
有一個良好的步行通過關於如何整合HWIOAuthBundle和FOSUserBundle在這裏實現自動用戶註冊和更新,這可能是值得一讀:
您是否使用FOSUBUserProvider或一些定製服務,以重定向到註冊頁面?你能解釋一點嗎?我無法重定向到註冊頁面。 – pregmatch