0

コードトークンを取得するためにFacebookにリダイレクトした後、Facebookが私にリダイレクトすると、アプリが応答を停止し、呼び出されるはずのアクションが起動しません。問題はどこだ?

私のルート

routes.MapRoute(
  "Enter facebook return",
  "enter/facebook/return",
   new { controller = "Users", action = "FacebookReturn" } //callback action, which not called -> problem
);

 routes.MapRoute(
    "Enter facebook",
    "enter/facebook",
    new { controller = "Users", action = "Facebook" }
 );

そして私のコントローラー

    public ActionResult Facebook()
    {
        OAuth2 facebook = new OAuth2(
            ConfigurationManager.AppSettings["oauth_facebook_id"].ToString(), 
            ConfigurationManager.AppSettings["oauth_facebook_secret"].ToString(), 
            ConfigurationManager.AppSettings["oauth_facebook_authorize"].ToString(), 
            ConfigurationManager.AppSettings["oauth_facebook_access"].ToString(), 
            ConfigurationManager.AppSettings["oauth_facebook_return"].ToString()
        );

        Session["enter_facebook"] = facebook; // save data to session

        Dictionary<string, string> p = new Dictionary<string, string> { { "scope", "email" } };

        string redirectURL = facebook.GetAuthCode(p); //redirect url

        //redirect url looks like https://www.facebook.com/dialog/oauth?client_id=111111111&response_type=code&redirect_uri=http%3A%2F%localhost.loc%2Fenter%2Ffacebook%2Freturn&scope=email

        return Redirect(redirectURL);
    }

    public ActionResult FacebookReturn(string code)
    {
        if (!string.IsNullOrEmpty(code))
        {
            //after returning to us
            OAuth2 facebook = (OAuth2)Session["enter_facebook"];
            facebook.Code = code; //getting code
            Dictionary<string, string> p = new Dictionary<string, string> { { "client_secret", ConfigurationManager.AppSettings["oauth_facebook_secret"].ToString() } }; //additional params

            OAuth2Token token = facebook.GetAccessToken(p, OAuth2.AccessTokenType.Dictionary); //getting marker access
            string access_token = token.dictionary_token["access_token"];
            if (!string.IsNullOrEmpty(access_token))
            {
                string user_data = OAuth2UserData.GetFacebookUserData(access_token); //getting data about user
                string a = "";
            }

        }

        return View("Enter");
    }

私のライブ httpheader

GET https://www.facebook.com/dialog/oauth?client_id=111111111&response_type=code&redirect_uri=http%3A%2F%localhost.loc%2Fenter%2Ffacebook%2Freturn&scope=email

Host: www.facebook.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox/23.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://localhost.loc/enter
Connection: keep-alive

この最後に、「Facebookでログイン」をクリックすると表示されます:

1. https://www.facebook.com/dialog/oauth?client_id=111111111&response_type=code&redirect_uri=http%3A%2F%localhost.loc%2Fenter%2Ffacebook%2Freturn&scope=email

2. http://localhost.loc/enter/facebook/return?code=2222222222

3.私のアプリはここで停止しました。FacebookReturn(string code) は呼び出されませんでした。p.2 でアドレスを取得できません (firefox をロード中にサインインしても終了しません)。ただし、リダイレクトせずに p.2 を呼び出すだけで問題ありません

質問は: Facebook から私のサイトにリダイレクトした後、アクションが呼び出されず、アプリケーション プールにいくつかの問題があるように見えるのはなぜですか?

4

0 に答える 0