根据您提供的有限信息,有几件事:
通过尝试使用 Web 身份验证代理完成干净的注销,您第二次尝试的 url 更接近标记,但是它有一些问题:
开头是正确的:"https://www.facebook.com/logout.php?"
在查询字符串上作为参数传递的注销重定向 url [next]
其中包含:“login_success.html”
需要进行 url 编码。
(否则你会被重定向到主页,这就是你的发现)
我认为这是正确的访问令牌。
当您调用它时,您最终会出现在空白页面上,上面会显示“成功”字样,以及来自 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 这是因为通过身份验证和继续,这允许我们提供方法,在后台使用第二个 uri / url,在时尚,如果身份验证过程产生的 url(以 / 开头)是我们提供的第二个 url,那么这就是指示符,自动将响应拉回我们的应用程序。
所以对于上面的代码,wab(Web 身份验证代理的缩写)将启动它的内部 Web 视图控件并导航到 Facebook 注销 url,如您所知,当注销完成时,它将重定向 web 视图到 url: 包含“login_success.html”,第二个发生的 (wab) 将检测到作为第二个参数https://www.facebook.com/connect 提供的我们的 url 是其中的一部分并返回到应用程序。并且 Facebook 身份验证令牌/cookie 将被清除。