如何从 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 登录即使在卸载应用程序后清除缓存和注销

如何使用 Facebook SDK 在我的应用程序中注销 Facebook

如何清除 Facebook App 对象的数据

如何在 iPhone 上从 Facebook 注销(本机/集成)