MVC4でSNSのOAuthログインを追加する

こちらのチュートリアルどおりなので特に話すことはないんですが、自分用のメモ。

Internetアプリケーションのテンプレートでプロジェクトを作成している場合は、RegisterAuthクラスに雛形が用意されていますので、自分の好きなSNSでApp KeyとApp Secretを取得して書き込むだけでなんとなくできてしまいます。

ただし、ログインの際に各SNS特有のプロパティ(アカウント名とかアクセストークンとか)を取得したい場合は、OAuthWebSecurity#VerifyAuthenticationで受け取ったAuthenticationResultオブジェクトを参照することが必要です。

AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));

//プロバイダー共通のプロパティ
var name = result.UserName

//プロバイダー固有のプロパティ
var userLink = result.ExtraData["link"]

あと、チュートリアルではFacebookユーザーのVerifiedがTrueか?というのを検証していますが、このパラメーターはテスト用に生成されたユーザーでは返されません(たぶん)。きちんとした値が返されるかを検証するには本物のアカウントを使う必要があります。