未能在.NET桌面应用程序中检索访问令牌
本文关键字:检索 访问令牌 应用程序 桌面 NET | 更新日期: 2023-09-27 17:57:53
我正在编写一个在Windows计算机上运行的.NET应用程序。无法通过浏览器访问它。问题是,我无法进行应有的身份验证。我目前正在用C#编写代码,更具体地说是用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;
}
}
}
}
当我执行此操作时,我会得到以下错误:
错误http://www.imageupload.org/getfile.php?id=50131&a=447f6fcc0ebd4d3f8e8a59a3a6e36ac3&t=4de0841c&o=0889D68FDC35508BA2C6F2689FCBAB7C30 A8670C9647EE598701D8BEC13ED278F0989D393&n=autherror.png&i=1
用户代码未处理Webexception远程服务器返回错误:(400)错误请求。
以下是我认为我可能会出错的地方:
- 我的应用程序设置正确吗
- 我的重定向url应该是
http://localhost
吗,即使实际上没有服务在那里侦听
最重要的是:
- 如何消除此错误并检索访问令牌
提前感谢!
您收到此错误是因为您不应该从桌面应用程序调用此URL:据我所知,您不能使用令牌端点进行桌面应用程序身份验证。此外,您可以直接获得访问令牌(无需首先要求提供代码)。这是你必须做的。
在嵌入式web浏览器中加载以下URL:
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&
redirect_uri=https://www.facebook.com/connect/login_success.html
用户将被要求登录,并将使用URL中的访问令牌重定向到此URL:
https://www.facebook.com/connect/login_success.html#access_token=...
因此,您必须检测重定向并从URL中检索访问令牌。
谢谢五重奏!
然而,我已经设法通过使用C#Facebook SDK解决了我自己的问题。这个软件开发工具包真的很有帮助!
包含大量样品(包括授权)
任何使用facebook在.NET中编程的人都应该去看看!脸书的编码现在变得容易多了。
http://facebooksdk.codeplex.com/