【问题标题】:c# WPF WebBrowserc# WPF WebBrowser
【发布时间】:2012-08-28 13:02:35
【问题描述】:

我正在尝试进行简单的 Facebook 登录。我有一个新窗口,我在其中输入了System.Windows.Controls.WebBrowser,然后将其导航到

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token

但在我登录后它会将我重定向到

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

我应该有令牌,但 System.Windows.Controls.WebBrowser 控件 Source 属性没有给我完整的 URL,给了我

https://www.facebook.com/connect/login_success.html 而不是https://www.facebook.com/connect/login_success.html#access_token=THE_TOKEN&expires_in=7180

【问题讨论】:

    标签: c# wpf facebook


    【解决方案1】:

    看看这个answer (MSDN) 我想它会解决你的问题! 您将需要:

    <Window x:Class="WpfApplicationTest.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
            xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
            Title="Window2" Height="300" Width="300">
         <StackPanel>
            <wfi:WindowsFormsHost>
                <wf:WebBrowser Navigated="WebBrowser_Navigated" x:Name="wfwb"/>
            </wfi:WindowsFormsHost>
         </StackPanel>
    </Window>
    

    【讨论】:

    • 我是使用 WindowsFormsHost 和 System.Windows.Forms.WebBrowser 但以编程方式完成的。感谢您的快速回答:P
    【解决方案2】:

    只需为 c# 添加对 facebook.dll 的引用,并制作 webbrowser.Navigated 事件 - 对我有用

    private void m_WebBrowser_Navigated(object sender, NavigationEventArgs e)
        {
            Uri url = e.Uri;
            FacebookOAuthResult result;
            dynamic fb = new FacebookClient();
    
            if (fb.TryParseOAuthCallbackUrl(url, out result))
            {
                if (result.IsSuccess)
                {
                    AccessToken = result.AccessToken;
                    Window window = Window.GetWindow(this);
                    window.Close();                    
                }
                else
                {
                    var errorDescription = result.ErrorDescription;
                    var errorReason = result.ErrorReason;
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2012-11-13
      • 2014-10-22
      • 2011-04-24
      相关资源
      最近更新 更多