私はasp.net mvcに取り組んでいます。MVC アプリケーションに Facebook 統合を実装しようとしています。ここでは、Facebook のログインに OAuth メカニズムを選択しました。これが私のマークアップです。
<a href="/Account/FacebookLogin">Login With Facebook</a>
そして、これが私の行動です。
public ActionResult FacebookLogin()
{
oAuthFacebook oauth = new oAuthFacebook();
return new RedirectResult(oauth.AuthorizationLinkGet());
}
そして私のコールバックURLは/Home/FBLogin
public ActionResult FBLogin()
{
oAuthFacebook oAuth = new oAuthFacebook();
if (Request["code"] == null)
{
//Redirect the user back to Facebook for authorization.
return new RedirectResult(oAuth.AuthorizationLinkGet());
}
else
{
oAuth.AccessTokenGet(Request["code"]);
if (oAuth.Token.Length > 0)
{
//Handle Accesstoken : oAuth.Token
}
}
return RedirectToAction("Dashboard", "Home");
}
ここで私の問題は、すでにFacebookサイトにログインしてから自分のサイトを開いてFacebookボタンでログインをクリックすると、非常にうまく機能することです。
しかし、Facebook サイトにログインしておらず、mvc アプリを介して Facebook に新たにログインしたい場合。Facebookのリダイレクトループが発生します。つまり、コールバックURLを呼び出し続けるため、私の場合はダッシュボードアクションにリダイレクトできず、Facebookのログインページでリロードが停止します。すべての Cookie をクリアして試してみましたが、変わりません。間違いが私側なのかFacebook側なのかわかりません。
更新:
属性を追加しauth_type=reauthenticate
て問題を解決すると、問題なく動作します。Facebook サイトにすでにログインしている場合は、再認証されます。Facebook サイトでログアウトし、アプリケーションを介してログインしようとすると、通常のログイン用と再認証ログイン用のパスワードが約2 回要求されます。この動作を克服する方法はありますか? 私を導いてください。ありがとうございます。