Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:Can';无法从嵌入式webbrowser获取访问令牌_C#_Facebook_Facebook Graph Api - Fatal编程技术网

C#:Can';无法从嵌入式webbrowser获取访问令牌

C#:Can';无法从嵌入式webbrowser获取访问令牌,c#,facebook,facebook-graph-api,C#,Facebook,Facebook Graph Api,我用C#创建了一个WPF桌面应用程序,并放置了一个System.Windows.Controls.WebBrowser 键入此内容(其中{0}是我的应用程序id/密钥) 手动输入我的firefox/ie/任意内容并转到工作流将我的返回发送到 https://www.facebook.com/connect/login_success.html#access_token=TOKEN 到目前为止还不错 但是将mySystem.Windows.Controls.WebBrowser导航到工作流会将此

我用C#创建了一个WPF桌面应用程序,并放置了一个
System.Windows.Controls.WebBrowser

键入此内容(其中
{0}
是我的应用程序id/密钥)

手动输入我的firefox/ie/任意内容并转到工作流将我的返回发送到

https://www.facebook.com/connect/login_success.html#access_token=TOKEN
到目前为止还不错

但是将my
System.Windows.Controls.WebBrowser
导航到工作流会将此浏览器重定向到

https://www.facebook.com/connect/login_success.html

没有访问令牌。我做错了什么?

在实现时遇到了类似的问题。您可能在WPF中遇到了错误。为了实现登录功能,我不得不回到WinForms。这也修复了我在退出时遇到的一个奇怪的崩溃。

我想出了一个解决办法。WPF浏览器会切断url的哈希部分,而WinForms webbrowser则不会

因此,请看我的XAML窗口后面的代码,我将使用该窗口从用户处获取Facebook应用程序权限:

public partial class DiagnosticBrowserWindow : Window
{
    public DiagnosticBrowserWindow(string urlToRequest)
    {
        InitializeComponent();

        System.Windows.Forms.WebBrowser shadowBrowser = new System.Windows.Forms.WebBrowser();

        shadowBrowser.Navigated += (sender, e) =>
        {
            // the access token is now
            // here in e.Url
        };

        this.Browser.Navigated += (sender, e) =>
        {
            if (this.Browser.Source.AbsoluteUri.StartsWith("https://www.facebook.com/connect/login_success.html"))
            {
                shadowBrowser.Navigate(urlToRequest);
            }
        };

        this.Browser.Navigate(urlToRequest);
    }
}
这是可行的,因为一旦授予应用程序权限(我们通过检测重定向到login_success.html来检测),我们就会将影子浏览器(WinForms Webbrowser)发送到初始请求页面,该页面为:

https://www.facebook.com/dialog/oauth?&client_id={0}&response_type=token&redirect_uri=https://www.facebook.com/connect/login_success.html&display=popup&scope=publish_stream,offline_access
Facebook将检测到权限已被授予,并将shadowBrowser发送回login_success.html,这一次您可以读取哈希部分

https://www.facebook.com/dialog/oauth?&client_id={0}&response_type=token&redirect_uri=https://www.facebook.com/connect/login_success.html&display=popup&scope=publish_stream,offline_access