【问题标题】:.net desktop facebook sdk UserToken.net 桌面 facebook sdk UserToken
【发布时间】:2013-09-30 12:35:05
【问题描述】:

我正在尝试编写一个简单的 Facebook 桌面应用程序 (C# WPF)。程序应该显示的唯一内容是用户时间线。 我对 .net Facebook sdk (v 6.0) 很陌生。我在 sdk 网站和 Facebook 开发者网站上阅读了很多文档。到目前为止,除了一件事,一切听起来都很清楚。我对整个登录有很大的问题。正如我在开发人员网站上阅读的那样,我需要获取用户访问令牌来获取用户的“私人”数据。如 sdk 站点上所述,获取此类令牌的唯一方法是使用正确的 URI 打开浏览器并从中检索令牌。这真的是唯一的方法吗?我不想打开浏览器或类似的东西。有没有办法将用户名和密码发送到某种网络服务或任何获取令牌的东西?有谁知道我如何在没有浏览器的情况下获取令牌?

亲切的问候 曼努埃尔

【问题讨论】:

    标签: c# wpf facebook facebook-graph-api facebook-login


    【解决方案1】:

    无需打开浏览器。只需在表单中嵌入一个 WebBrowser 控件并使其不可见。

    为导航事件添加处理程序:

     webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
    

    并从服务器获取答案:

    这段代码是一年前完成的,我不知道他们是否更改了 API,但它运行良好。

    void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
                string Url = e.Url.AbsoluteUri.ToString();
                if (Url.StartsWith("https://www.facebook.com/connect/login_success.html"))
                {
                    if (Url.Contains("#") && Url.Contains("access_token="))
                    {
                     AccessToken = Url.Substring(Url.IndexOf("access_token=") + 13 , Url.Length - Url.IndexOf("access_token") -13);
                        if (AccessToken.Contains("&"))
                        {
                        AccessToken = AccessToken.Substring(0, AccessToken.LastIndexOf("&"));   
                        }    
                    } 
                }
     }
    

    【讨论】:

    • 是的,没错,但是如果浏览器不可见,我如何输入凭据,我可以通过 URL 作为参数发送凭据吗?
    • 您必须在 facebook API 图上发布一个 HTTP 帖子。您将不得不显示一个新窗口或不可见的网络浏览器,因为用户需要登录他的 Facebook 帐户才能获得访问令牌。完成后再次隐藏它。
    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多