未能在.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吗,即使实际上没有服务在那里侦听

最重要的是:

  • 如何消除此错误并检索访问令牌

提前感谢!

未能在.NET桌面应用程序中检索访问令牌

您收到此错误是因为您不应该从桌面应用程序调用此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/