Silverlight 在WP7上注销Facebook C#SDK

Silverlight 在WP7上注销Facebook C#SDK,silverlight,facebook,windows-phone-7,facebook-c#-sdk,logout,Silverlight,Facebook,Windows Phone 7,Facebook C# Sdk,Logout,我正在尝试添加一个用于注销的功能,该功能在ApplicationBarMenuItem的单击事件中调用,如下所示 这就是我的代码的样子: var oauth = new FacebookOAuthClient(); var logoutParameters = new Dictionary<string, object> { { "next", "http://www.facebook.com" }

我正在尝试添加一个用于注销的功能,该功能在ApplicationBarMenuItem的单击事件中调用,如下所示

这就是我的代码的样子:

    var oauth = new FacebookOAuthClient();

    var logoutParameters = new Dictionary<string, object>
          {
              { "next", "http://www.facebook.com" }
          };

    var logoutUrl = oauth.GetLogoutUrl(logoutParameters);

    LayoutRoot.Children.Add(FacebookLoginBrowser);
    FacebookLoginBrowser.Navigate(new Uri(logoutUrl.AbsoluteUri, UriKind.Absolute));

这绝对是我的应用程序的一个障碍,所以任何人能提供的任何帮助或建议都将不胜感激

显然,它在Facebook端被破坏了:

问题在于重定向URL中的域与Facebook应用程序设置中作为站点域提供的域不匹配。显然,没有人能看到这一点,因为您无权访问我的应用程序设置,但这是一个线索,我的应用程序无法注册到“http://www.facebook.com“(因为我相信这个领域必须是独一无二的)

解决方案是在下一个参数中使用我自己的网站,在我的例子中是thecruxapp.com。此外,还需要session_key和api_key,因此最终为我工作的代码是:

string logout_format = "http://www.facebook.com/logout.php?api_key={0}&session_key={1}&next={2}";
string access_token = HttpUtility.UrlDecode(fbClient.AccessToken);
char[] tokenSeparator = new char[] { '|' };
string session = access_token.Split(tokenSeparator)[1];

FacebookLoginBrowser.Navigate(new Uri(string.Format(logout_format, apiKey, HttpUtility.UrlEncode(session), HttpUtility.UrlEncode("http://thecruxapp.com"))));

我没有遇到在另一个答案中链接到的错误,它与此无关-只要传入下一个参数的URL与在Facebook上的应用程序设置中输入的站点域匹配,注销和重定向都会正常发生。

也有同样的问题,没有web应用程序作为我的WP7应用程序的后端。 我发现这个解决方案很有用,但对代码做了一些修改,因为自从发布后,facebook呈现的HTML有了一些修改


这对我来说是有效的

我将此标记为答案,因为看起来这句话是正确的——这肯定是Facebook方面的错误。然而,链接的bug可能与我看到的行为有关,但与我看到的行为无关。在那里发帖的每个人都描述自己已注销,但没有被转发到他们在下一个参数中指定的url。我不会被注销抱歉,删除了标记作为答案,直到我确定该漏洞是Facebook的,而不是在我的codePrabir链接到相同的错误报告,你做了,所以我想它一定是相关的。我希望我能更多地了解这一点。如果有人能向我解释链接的bug是如何导致我的应用程序无法完全注销的,因此需要用户手动完成注销,我将不胜感激。目前,我唯一的解决办法是在浏览器上方显示文本,指示用户完成自己的注销(这是一个相当贫民区)。我没有在我的fb应用程序网站域中输入任何内容。所以这个解决方案不适合我。我仍然无法在我的wp7应用程序中登录或注销。Facebook需要一个站点域。我的情况可能与你的情况相同——我的应用程序不是一个站点,也不使用任何后端。我必须注册一个域名,并设置主机,以使这项工作。如果你的应用程序值得为其构建一个本机应用程序,那么不管怎样,托管一个信息性登录页来表示它可能是值得的。我可以确认这项技术目前是有效的。我现在将我的网站url设置为指向www.facebook.com。
string logout_format = "http://www.facebook.com/logout.php?api_key={0}&session_key={1}&next={2}";
string access_token = HttpUtility.UrlDecode(fbClient.AccessToken);
char[] tokenSeparator = new char[] { '|' };
string session = access_token.Split(tokenSeparator)[1];

FacebookLoginBrowser.Navigate(new Uri(string.Format(logout_format, apiKey, HttpUtility.UrlEncode(session), HttpUtility.UrlEncode("http://thecruxapp.com"))));