使用Facebook sdk .net进行身份验证 - 浏览器中的空白屏幕

时间:2014-01-18 22:58:55

标签: c# facebook windows-phone-7 facebook-c#-sdk

我在使用Facebook SDK .net

的Windows Phone 7应用中遇到身份验证问题

这是认证部分

var facebookClient = new FacebookClient();
facebookClient.AppId = FacebookAppId;
facebookClient.AppSecret = FacebookSecret;

var authUrl = facebookClient.GetLoginUrl(new
{
   client_id = FacebookAppId,
   client_secret = FacebookSecret,
   scope = "publish_stream",
   response_type = "token",
   display = "touch",
   redirect_uri = "https://www.facebook.com/connect/login_success.html"
});               

browser.Navigate(authUrl);

因此,浏览器屏幕似乎工作正常,登录屏幕显示,然后权限屏幕显示。当我在最后一个权限屏幕上按OK时,我只得到一个白色屏幕。事实上,我现在已经盯着这个白色屏幕持续了10分钟。

有什么想法吗?

这是Browser.Navigated事件处理程序。我已经评论了我放置断点的地方

async void browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    FacebookOAuthResult result;
    var facebookClient = new FacebookClient(); // Put break point here to make sure the event is handled

    if(facebookClient.TryParseOAuthCallbackUrl(e.Uri, out result))
    {
        if (result.IsSuccess) // Put break point here to check result but its never reached
        {
            Logging.WriteLine("Authentication was a success!");

            Classes.Facebook.Instance.AccessToken = result.AccessToken;

            CreateFacebookPost();                
        }
        else
        {
           MessageBox.Show(string.Format("Error: {0}\nReason:{1}", result.ErrorDescription, result.ErrorReason), "Authentication Error", MessageBoxButton.OK);
           Logging.WriteLine("Authentication Failed");
           Logging.WriteLine(string.Format("Error: {0}\nReason:{1}", result.ErrorDescription, result.ErrorReason));
         }

        browser.Visibility = System.Windows.Visibility.Collapsed;
        browser.Navigated -= browser_Navigated;

     }
}

编辑1: 更多信息。我知道身份验证(来自Facebook的视图)是成功的,因为我现在可以在我的Facebook上看到该应用程序。此外,如果我再次按下手机以转到应用程序的上一个屏幕,然后返回到Facebook部分,它会显示一切正常,我可以发帖。

编辑2: 使用非常相似的代码,这在Windows Phone 8应用程序中工作正常。我比较了2并没有看到任何差异。

1 个答案:

答案 0 :(得分:0)

看起来我找到了解决方案。您必须在IsScriptedEnabled=True控件上设置WebBrowser。默认情况下,它是错误的。