facebook登录asp.net 400错误请求

时间:2012-03-19 12:39:34

标签: c# asp.net facebook facebook-graph-api facebook-c#-sdk

我在最近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参数看起来几乎相同,这就是为什么我不知道我做错了什么。 以下是网址的示例应用格式:

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

我的应用网址格式:

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 个答案:

答案 0 :(得分:1)

Facebook往往不喜欢localhost网址。您可以在hosts文件(例如fbdev.com)中为假域创建条目,并在开发人员控制台的应用程序的基本设置中将该域(带端口)设置为应用程序URL和域。