我曾经能够创建一个WebBrowser控件,导航到登录URL(例如“http://www.facebook.com/dialog/oauth/?response_type=token&display=popup&scope=user_about_me&client_id = 179873125388138& redirect_uri = http%3a%2f%2fwww.facebook.com%2fconnect%2flogin_success.html“),然后使用下面的代码(来自Facebook-C#-SDK示例代码)捕获Navigated事件并提取访问令牌。然而,最近,它似乎只是重定向到RedirectURL,并没有附加访问令牌。 Facebook在2011年2月至6月期间如何处理授权流程是否有某种变化?也许这是一个IE9问题?
奇怪的是,我可以手动将常规IE9浏览器发送到同一个URL,并且访问令牌可以正常添加。只有当我以编程方式使用WebBrowser.Navigated事件执行此操作时,我才会看到该令牌。
谢谢,乔恩
private void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
FacebookOAuthResult oauthResult;
if (FacebookOAuthResult.TryParse(e.Uri, out oauthResult))
{
this.FacebookOAuthResult = oauthResult;
this.DialogResult = oauthResult.IsSuccess;
}
else
{
this.FacebookOAuthResult = null;
}
}
答案 0 :(得分:0)
我很确定这是http://facebooksdk.codeplex.com/discussions/261528,这是Facebook行为变化与WPF WebBrowser控件问题之间的相互作用。通过切换到WinForms,我能够解决我的问题。该链接讨论了一种替代方法,该方法保留在WPF中但添加了对FacebookOAuthClient.ExchangeCodeForAccessToken()的调用。