在WP7上注销Facebook C#SDK

时间:2011-06-05 01:29:10

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

我正在尝试添加注销功能,该功能在ApplicationBarMenuItem的click事件中调用,跟随the instructions on this blog

这就是我的代码:

    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));

我期望此代码执行的操作是在Navigated事件完成时将用户从Facebook注销,然后显示参数中传递的任何URL(在本例中为facebook.com)。但是,我所看到的是它总是加载“http://m.facebook.com/”而不管传入什么并且它不会注销Facebook。我不关心它加载后的内容(这会很棒,但此时我只是希望它执行注销操作,以便用户可以在他们再次启动我的应用程序时退出并登录)。我能成功注销用户的唯一方法是,如果他们了解页面何时加载,他们需要向下滚动,放大,并在页面底部手动点击“注销” - 这不是一个可接受的用户体验。

我还从该博客下载了示例代码,它大致相同。

我见过thisthis post,并且使用的网址与oath.GetLogoutUrl(logoutParameters)返回的内容非常接近,但我尝试使用相同的结果构建确切的网址:< / p>

var logoutUrl = new Uri("https://www.facebook.com/logout.php?next=http://www.facebook.com&access_token="+fbClient.AccessToken);

对于我的应用程序来说,这绝对是一个船舶限制器,所以任何人都可以提供的帮助或建议将非常感谢!

3 个答案:

答案 0 :(得分:2)

显然它在Facebook方面被打破:http://bugs.developers.facebook.net/show_bug.cgi?id=17217

答案 1 :(得分:1)

事实证明,问题在于重定向网址中的域与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上。

答案 2 :(得分:0)

有同样的问题,没有网络应用作为我的WP7应用的后端。 我发现这个解决方案很有用http://claudiufarcas.blogspot.com/2011/06/wp7-webbrowser-caching-and-facebook.html但是对代码进行了一些更改,因为自帖子以来对Facebook呈现的HTML进行了一些更改。

这对我有用http://blog.jocelynenglund.com/?p=21