私は成功して使用HWIOAuthBundle
しています。FOSUserBundle
この/login
ページに移動すると、Googleアカウントにリダイレクトされ、承認されて、入力されたデータ(パスワードフィールドを除く)が入力された登録フォームに戻ります。
登録フォームを省略してユーザーを自動登録することはできますか?
この場合、Googleアカウントでの認証のため、パスワードは必要ありません。
このシナリオをどのように達成する必要がありますか?
私は成功して使用HWIOAuthBundle
しています。FOSUserBundle
この/login
ページに移動すると、Googleアカウントにリダイレクトされ、承認されて、入力されたデータ(パスワードフィールドを除く)が入力された登録フォームに戻ります。
登録フォームを省略してユーザーを自動登録することはできますか?
この場合、Googleアカウントでの認証のため、パスワードは必要ありません。
このシナリオをどのように達成する必要がありますか?
質問は少し古いですが、決して遅くなるよりはましです。
カスタムプロバイダーを作成する必要があります。バンドルをFOSUserBundleと統合する場合は、FOSUBUserProviderクラスをオーバーライドする必要があります。
HWIOAuthBundle / Security / Core / Userディレクトリには、OAuthBundleですぐに利用できるすべてのプロバイダーがあります。
接続中に新しいユーザーを作成するには、FOSUBUserProvider(またはEntityUserProviderなど)プロバイダークラスのloadUserByOAuthUserResponse()メソッドをオーバーライドする必要があります。ご覧のとおり、データベースにユーザーが見つからない場合、デフォルトのメソッドは例外をスローします。必要なのは、userManagerを呼び出して新しいエントリを作成することだけです。
これは、FOSFacebookBundle統合の場合とまったく同じ状況です(そうした場合)。
この回答がお役に立てば幸いです(特に、少し混沌としているように聞こえるかもしれません)。
編集:統合プロセスを説明するブログ投稿
を
投稿しました。
またはこのチュートリアル
ここでは、HWIOAuthBundleとFOSUserBundleを統合して自動ユーザー登録と更新を実現する方法についての優れたウォークスルーがあります。これは一読の価値があるかもしれません。
はい、もちろん。
あなたはグーグルからの応答を処理し、ユーザーマニュアルのようなものを承認する必要があります:
// 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();
ユーザーがユーザーによって通話ページへのリダイレクトを承認された後