2018年6月4日月曜日

ASP.NET Identity Facebook認証失敗

VS2015+Owin3.0.1を使用してFacebookで単純な認証処理を実装しようとして無駄にはまってしまったので忘れないようにメモ

環境

  • Visual Studio 2015
  • .Net Framework 4.6.1
  • ASP.NET MVC 5
  • Microsoft.Owin 3.0.1.0

現象

  1. Facebook developer設定。
  2. ASP.NET 新規MVCサイト作成。
  3. Startup.Auth.csのFacebook認証箇所コメントアウトを外す。(app.UseFacebookAuthentication)
  4. appId,appSecretを設定(手順1の操作で取得したもの)
  5. 起動してログイン画面、"Facebook"を選択


認証は通っているように見えるが、下記問題が発生

  • AccountController ExternalLoginCallbackメソッド内のAuthenticationManager.GetExternalLoginInfoAsync戻り値がNullになる。
  • Facebookから戻ってきた後ログイン画面がまた表示される。またURLが”http://localhost:xxxxx/Account/Login?_=_”となる。(後ろに_=_が追加された状態)


対応方法

NugetでMicrosoft.Owin関係のバージョンを3.1以上に、Newtonsoft.Jsonのバージョンを10.0以上にあげる。

※Visual Studio 2015で作るとMicrosoft.Owinが3.0.1