我在最近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
答案 0 :(得分:1)
Facebook往往不喜欢localhost网址。您可以在hosts文件(例如fbdev.com)中为假域创建条目,并在开发人员控制台的应用程序的基本设置中将该域(带端口)设置为应用程序URL和域。