我正在编写一个在 Windows 计算机上运行的 .NET 应用程序。无法通过浏览器访问。问题是,我不能像我应该的那样进行身份验证。我目前正在使用 C# .NET 进行编码,更具体的是 C#。
- 我的表单上有一个网络浏览器控件。
- 用户通过此网络浏览器控件登录到 facebook。
- 登录后,我开始身份验证程序。
- 然后我检索一个代码。
这就是它出错的地方。使用此代码,我想获得访问令牌。生成的请求 URL 如下所示:https://graph.facebook.com/oauth/access_token?client_id=____MY_APP_ID______&redirect_uri=http://localhost/&client_secret=_____MY_APP_SECRET_____&code=____MY_RETREIVED_CODE_____
并且是通过以下代码生成的。
请注意,我的重定向 URL 是http://localhost
. 这应该没问题吧?
另外,在我的应用程序设置中,我有以下信息。
站点 URL:
http://localhost/
站点域:localhost
private String ExchangeCodeForToken(String code, Uri redirectUrl)
{
var TokenEndpoint = new Uri("https://graph.facebook.com/oauth/access_token");
var url = TokenEndpoint + "?" +
"client_id=" + _AppID + "&" +
"redirect_uri=" + redirectUrl + "&" +
"client_secret=" + _AppSecret + "&" +
"code=" + code;
var request = WebRequest.CreateDefault(new Uri(url));
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
using (var responseReader = new StreamReader(responseStream))
{
var responseText = responseReader.ReadToEnd();
var token = responseText.Replace("access_token=", "");
return token;
}
}
}
}
当我执行这个时,我得到这个错误:
用户代码未处理 Webexception 远程服务器返回错误:(400) 错误请求。
这是我认为我可能会出错的地方:
- 我的应用设置是否正确?
- 我的重定向 url 是否应该是
http://localhost
,即使那里实际上没有监听服务?
最重要的是:
- 如何摆脱此错误并检索访问令牌?
提前致谢!