Facebook войти в asp.net 400 плохой запрос - PullRequest
1 голос
/ 19 марта 2012

Последние 5 часов я застрял с аутентификацией в Facebook, и у меня мало мыслей, почему я получаю ошибку: 400 неверных запросов. В Интернете я нашел один пример приложения, в котором пользователь авторизуется, а затем продолжает работу с приложением. Я запускаю то же самое приложение локально, и я могу запустить его и правильно получить маркер доступа. Вот способ получить токен:

 /// <summary>
        /// Get the authorisation token
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public Dictionary<string, string> GetAccessToken(string code, string scope,string  redirectUrl)
        {
            Dictionary<string, string> tokens = new Dictionary<string, string>();
            string clientId = FacebookContext.Current.AppId;            
            string clientSecret = FacebookContext.Current.AppSecret;
            string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}&scope={4}",
                            clientId, redirectUrl, clientSecret, code, scope);
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(response.GetResponseStream());
                string retVal = reader.ReadToEnd();

                foreach (string token in retVal.Split('&'))
                {
                    tokens.Add(token.Substring(0, token.IndexOf("=")),
                        token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1));
                }                
            }
            return tokens;
        }

Проблема возникает, когда ответ пытается получить ответ от объекта запроса:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)

С примером приложения у меня нет проблем, но в приложении я пытаюсь использовать код, получаю ошибку 400 неверных запросов. Параметр url выглядит примерно так же, и поэтому я понятия не имею, что я делаю неправильно. Вот пример приложения в формате URL:

https://graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&redirect_uri=http://localhost:5000/fbregcallback.aspx&client_secret=982161272e8adc3af17952dc0f70b67e&code=AQBSvKfdc3ynTWeJTVSq7Y2JRV52YNCHPV5nAluxVf3_Ger68NJZeWScbKg1ttMfVOuXrOTfbvgq6o_bXIemnlx2yH-eu2vDvs-94EDEPxHFPUTQ4UjnSgxKAZjs6h-APxqHrRz5gvlafYb89uIoGhBuu-sIPrvIThBK-BmFRuytrj2fHYSU9y_xbFIjAYNUw_U&scope=user_birthday,publish_stream,create_event,user_photos

Формат URL моего приложения:

https://graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&redirect_uri=http://localhost:47736/Default.aspx&client_secret=982161272e8adc3af17952dc0f70b67e&code=AQBd_IYcBLy-UfV68PDH8gWFOud5eLzVt8ZukSVfo35qSLw7jn5yrpw-zqr4WhVigv0G1tVtEVIj2fnvBAzmWU3SlOtZgCC-0P1sBRQ999JP60Qe4s0UT1c0Z1cupMW8qNdDfuBhzxty9581gTISPq9xYF1SEifX60kDUc1bd7FuUGsGyGBgtfzO8PdNZoGrq6Y&scope=user_birthday,publish_stream,create_event,user_photos

Каждый совет будет приветствоваться, потому что эта проблема действительно действует мне на нервы в данный момент. Большое спасибо, Laziale

1 Ответ

1 голос
/ 19 марта 2012

Facebook не любит локальные URL-адреса. Вы можете создать запись для поддельного домена в файле hosts (например, fbdev.com) и установить этот домен (с портом) в качестве URL-адреса и домена вашего приложения в основных настройках вашего приложения на консоли разработчика.

...