1

私は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 回要求されます。この動作を克服する方法はありますか? 私を導いてください。ありがとうございます。

4

0 に答える 0