如何从Facebook注销或清除WebAuthenticationBroker上的cookie?

时间:2015-02-14 13:45:09

标签: c# facebook windows-8 logout

1 个答案:

答案 0 :(得分:1)

根据您提供的有限信息,很少有事情: 尝试使用Web身份验证代理完成干净注销时,您的第二个已尝试的URL更接近标记,但它有一些问题:

开头是正确的:" https://www.facebook.com/logout.php?"

注销重定向url在查询字符串上传递为参数[next] 其中包含:" login_success.html" 需要进行网址编码。 (另一方面,你被重定向到主页,这是你的发现)

访问令牌我认为这是正确的。

当你打电话给它时,你最终会在空白页面上显示成功字样,以及来自Facebook的快乐警告信息,你应该小心地在查询字符串上传递访问令牌。

但这并不是问题,因为最终用户无法访问该数据。使用Web身份验证代理时。

在修复url编码之后,您将遇到的下一个问题是用户被留在这个丑陋的页面,带有Facebook安全警告消息,用户必须单击其设备上的后退导航按钮才能返回应用程序,这不是理想的,Facebook警告页面也不会告诉最终用户这样做。

因此,要对抗此行为,请将Web身份验证代理作为触发注销请求和检测回调状态的不同方法。

所以最好向您展示一些代码:)

    _logoutUrl = FBClient.GetLogoutUrl(new
        {
            next = "https://www.facebook.com/connect/login_success.html",
            access_token = //your access token (string)
        });

        var url = new Uri("https://www.facebook.com/connect");

            WebAuthenticationBroker.AuthenticateAndContinue(_logoutUrl, url);

你会看到我使用了WebAuthenticationBroker.AuthenticateAndContinue而不是AuthenticateAsync这是因为通过authenticate和continue,这允许我们提供方法,以及在引擎盖下使用的第二个uri / url,如果验证过程产生,在(以/包含)开头的网址中,我们提供的第二个网址,那么这就是指示器,自动将响应拉回我们的应用程序。

因此,对于上面的代码,wab(Web身份验证代理的简称)将启动它的内部Web视图控件并导航到Facebook注销URL,如您所知,并且当注销完成时将webview重定向到url:contains" login_success.html",发生的第二个(wab)将检测到我们提供的第二个参数https://www.facebook.com/connect的url是其中的一部分并返回应用程序。 Facebook身份验证令牌/ cookie将被清除。