overこの広告は、90日以上更新していないブログに表示しています。OAuthHWIOAuthBundleを使ってSymfony2でOAuth認証を実装するの続編です。今回はアプリ側にユーザー情報を格納するテーブルがあることを前提に、OAuth認証によって得られた情報と連携させてみます。実現したい内容としては、以下となります。registration)なのでカスタマイズが必要になります。--entity=VendorSampleBundle:Userカラムは以下を設定しました。作成後、HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserを継承します。前回はHWIOAuthBundleが標準で提供しているOAuthUserProviderを使用しました。今回は先ほど作ったユーザー情報を格納するテーブルと連携を行うため、EntityUserProviderを継承して新たにsrc\Vendor\SampleBundle\Auth\OAuthUserProvider.phpを作成します。}}中身は後で実装します。Containerに登録src\Vendor\SampleBundle\Resources\config\services.ymlを以下のように書き換えます。Entitiyのクラス名OAuth認証との連携用プロパティの3つをInjectするように設定します。APIを参考にしながら実装していきます。loadUserByUsername本来であれば認証用フォーム等から入力されたユーザー名をもとに該当するEntityを返す処理を書くのだろうが、HWIOAuthBundleによってこいつの代わりにEntityUserProviderのloadUserByOAuthUserResponseが利用されるようになるため、実装不要。念の為確認してみたが、一度も呼ばれなかった。refreshUser認証が必要な箇所へのアクセス毎に呼ばれる。DBからユーザー情報を取得しなおしたり、内部的な処理を行ったり(最終アクセス時刻の記録など?)する場合は実装するらしい。今回は特にその必要もないので、そのまま返す。supportsClasssupportsClassによると、引数で与えられたユーザークラスをこのUserProviderがサポートするかどうかを返せば良いらしいので、以下のように実装。いつ、どのような場面で呼ばれるのか不明。コンストラクタ、loadUserByOAuthUserResponseをOverrideloadUserByOAuthUserResponseの標準実装は次のようになっています。}冒頭に書いた、ユーザー情報が存在すればそれを利用して認証するもしユーザー情報が存在しなければOAuth認証によって得られた情報をもとにユーザーを作成するのうち、前者しか実現できていないのがわかると思います。loadUserByOAuthUserResponseをOverrideします。作成したユーザーを永続化するためにEntityManagerを使いたいので、以下のようにコンストラクタをOverrideします。}これで、後者についても実現できます。最後に「ユーザー情報が存在しなければ~」を自前で実装しましたが、FOSUserBundleと一緒に使うとひょっとしたらすべて面倒見てくれるかもしれません。configurationを見るに、OAuth認証が完了した後にアプリ側に用意した登録フォームでアプリ独自の設定情報をユーザーに登録させるための"connect"という仕組みも提供しているようです。日本語情報が少ないですね。19:11HWIOAuthBundleを使ってSymfony2でOAuth認証を実装する(EntityUserProvider)Tweet広告を非表示にする関連記事2015-01-26JenkinsとDockerを使い、WebアプリのE2Eテストをする前回のエントリの続きです。今回は単純なアプリのテストなので...2014-12-22マニュアルには載っていないCodeceptionのコツ/TIPSバージョン2で入った新機能などを紹介するエントリなど書く書く...2013-11-28CodeceptionとAspectMockを使って和田卓人さんの現在時刻に依存するテストを書いてみ...TLで話題になっているCodeIQでの問題と解説はこちらです。これ...2013-11-21PhalconアプリケーションをCodeceptionでテストしてみた先日、Codeceptionが1.8にバージョンアップされました。最新記事Codeceptionのドキュメントの翻訳をはじめました。(2)はてなブログをはじめよう!piccaglianiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。