如何从 Facebook 注销或清除 WebAuthenticationBroker 上的 cookie?
Posted
技术标签:
【中文标题】如何从 Facebook 注销或清除 WebAuthenticationBroker 上的 cookie?【英文标题】:How can I logout from Facebook or clear cookies on WebAuthenticationBroker? 【发布时间】:2015-04-15 11:27:22 【问题描述】:我正在使用此功能在 Facebook 上注销;
WebAuthenticationResult webAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri(logOutUrl));
我还没有退出。测试过的logoutUrls;
https://www.facebook.com/logout.php?next=ms-app://s-1-15-2-3770417266-2318136516-104659947-271617402-3372047-3177875635-1623475580/&access_token=CAAWBicfyTKIBAKP1Y3SqwsmifvM8IzC8mEVudOtlkQ2vTZB2ZCVGIV4rlJGYAtHSZCE3llAE4APTwPkO01DrsGO15TvvhvxfE0ZCVZA9KaqzHOIr4gRJaBvStN5ZAFBOkgUnAh8MVDYySpcw6tg7wAi3tdSctyFScHyvC9IexktnZCCh8VIveGKA1iP3LpG2b9pZBUOQsYCxLKZBVmqSjLHN4AissXi6vqL5TTz06mUFRmKZBvxrWouEkoTaju0xDYk4gZD
https://www.facebook.com/logout.php?next=https://www.facebook.com/connect/login_success.html&access_token=CAAWBicfyTKIBAImjTd00l36CxXBKTg47IZCOApW5f8jaOZCZBc3K8DZCdUQYABsRqCRq2Q9NurBHdBBqEuEarCKDT6HGHmqLQNQ1xLsZBGSuuZAEMiSfP95jeta4IkS4GHvnue8rJxiflIeXpBQ6VWC0BtaEYLBBqaelpTwEo9uWOgcISMGXDWt51r8n0JWqnH4JaJJD0cbmm1vTt06nH4m1S9pEeFBCcZD
我的错误是什么?我必须在 developer.facebook.com 中设置任何设置?
【问题讨论】:
请添加有关您所看到的错误行为的详细信息。解释为什么您认为代码和这些链接不起作用。你遇到了什么错误(如果有的话)。 当我一直调用这个网址时,facebook 重定向到 facebook.com/home.php 。但我希望重定向登录页面 【参考方案1】:根据您提供的有限信息,有几件事: 通过尝试使用 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 将被清除。
【讨论】:
以上是关于如何从 Facebook 注销或清除 WebAuthenticationBroker 上的 cookie?的主要内容,如果未能解决你的问题,请参考以下文章
调用 facebook ios sdk 的注销功能未清除用户凭据
注销时flutter_facebook_auth插件未清除数据
Firebase Facebook 登录即使在卸载应用程序后清除缓存和注销