我用C#创建了一个WPF桌面应用程序并放置了System.Windows.Controls.WebBrowser
。
键入此内容({0}
是我的应用ID /密钥)
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
手动进入我的firefox / ie / what并转到工作流程将我的回复发送到
https://www.facebook.com/connect/login_success.html#access_token=TOKEN
到目前为止,这很棒。
但导航我的System.Windows.Controls.WebBrowser
到工作流程会将此浏览器重定向到
https://www.facebook.com/connect/login_success.html
没有访问令牌。我做错了什么?
答案 0 :(得分:0)
我在实施Facebook PowerShell Module时遇到了类似的问题。您可能会在http://facebooksdk.codeplex.com/discussions/261528中遇到WPF中的错误。我不得不回到WinForms来实现登录功能。这也解决了我遇到的奇怪的崩溃问题。
答案 1 :(得分:0)
我想出了一个解决方法。 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)发送到初始请求页面,该页面为:< / p>
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,这次你可以读取哈希部分。