2

私は成功して使用HWIOAuthBundleしています。FOSUserBundle

この/loginページに移動すると、Googleアカウントにリダイレクトされ、承認されて、入力されたデータ(パスワードフィールドを除く)が入力された登録フォームに戻ります。

登録フォームを省略してユーザーを自動登録することはできますか?

この場合、Googleアカウントでの認証のため、パスワードは必要ありません。

このシナリオをどのように達成する必要がありますか?

4

4 に答える 4

12

質問は少し古いですが、決して遅くなるよりはましです。

カスタムプロバイダーを作成する必要があります。バンドルをFOSUserBundleと統合する場合は、FOSUBUserProviderクラスをオーバーライドする必要があります。

HWIOAuthBundle / Security / Core / Userディレクトリには、OAuthBundleですぐに利用できるすべてのプロバイダーがあります。

接続中に新しいユーザーを作成するには、FOSUBUserProvider(またはEntityUserProviderなど)プロバイダークラスのloadUserByOAuthUserResponse()メソッドをオーバーライドする必要があります。ご覧のとおり、データベースにユーザーが見つからない場合、デフォルトのメソッドは例外をスローします。必要なのは、userManagerを呼び出して新しいエントリを作成することだけです。

これは、FOSFacebookBundle統合の場合とまったく同じ状況です(そうした場合)。

この回答がお役に立てば幸いです(特に、少し混沌としているように聞こえるかもしれません)。

編集:統合プロセスを説明するブログ投稿
を 投稿しました。

于 2013-01-21T18:10:38.473 に答える
2

この要点を試してください

またはこのチュートリアル

于 2013-07-13T20:44:22.213 に答える
1

ここでは、HWIOAuthBundleとFOSUserBundleを統合して自動ユーザー登録更新を実現する方法についての優れたウォークスルーがあります。これは一読の価値があるかもしれません。

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

于 2014-04-04T10:44:30.943 に答える
-4

はい、もちろん。

あなたはグーグルからの応答を処理し、ユーザーマニュアルのようなものを承認する必要があります:

// 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();

ユーザーがユーザーによって通話ページへのリダイレクトを承認された後

于 2012-12-12T14:34:45.650 に答える