WebMatrix 2:OAuth でログインする

執筆日時:

「WebMatrix 2」と「ASP.NET Web Pages」を組み合わせれば、Web サイトへ OAuth 認証の機能を簡単に追加できる。標準で対応するプロバイダは以下の通り。

f:id:daruyanagi:20130127100427p:plain

そのほかにも、カスタムプロバイダを自作して追加したりもできるみたいだけど、今回は、まぁ、いいや。

スターターテンプレート

f:id:daruyanagi:20130127095934p:plain

で、問題はどうやって使うのか、だけど、「WebMatrix 2」の“スターター”テンプレートが格好の例となっているので、まずはこれを敵情視察したい。

f:id:daruyanagi:20130127100804p:plain

さっそく、画面右上の[ログイン]を押すが……Twitter も Facebook も使えないじゃないか。

f:id:daruyanagi:20130127100847p:plain

どうやら、“_AppStart.cshtml”*1でプロバイダを有効化する必要があるらしい(知ってた)。有効化したいプロバイダをコメントアウトしてリロードすれば、ちゃんと使えるようになる。

f:id:daruyanagi:20130127100700p:plain

とりあえず Twitter の API キーを取得して試したのだけど、うまくいかない*2。今回は原因を突き止めるのも面倒なので、API キーの要らない Google で試してみたが……

f:id:daruyanagi:20130127101058p:plainf:id:daruyanagi:20130127101110p:plainf:id:daruyanagi:20130127101114p:plain

いともあっさり動いた(右上に注目!)。

f:id:daruyanagi:20130127101234p:plain

データベースにもちゃんと登録されている*3。Google に認証を委譲したので、こちら側にはパスワードが保存されていない。

さて、“スターター”テンプレートから不要なものを削り、必要なものを足してアプリを作ってもいいのだけど、それも面倒そうだし、一から勉強する意味でも、次回は“空のサイト”テンプレートで Google 認証によるログインまでを実装しようかな、と思う*4

*1:アプリケーションの起動時に実行される

*2:わしが何かミスってるんだろう

*3:UserId が 2 になっているのは、Twitter で試して失敗したためかな

*4:実はもうだいたいできてるんだけど!