facebook 注销 API - 为啥下一步?

Posted

技术标签:

【中文标题】facebook 注销 API - 为啥下一步?【英文标题】:facebook logout API - Why Next?facebook 注销 API - 为什么下一步? 【发布时间】:2012-01-31 05:41:02 【问题描述】:

我正在编写一个 Windows Phone 7 应用程序并使用 C# sdk 让 Facebook 登录工作,但事实证明注销很有趣。我读过这篇文章:

Cannot Logout of Facebook with Facebook C# SDK

这似乎反映了表明我应该导航到的 FB 文档

https://www.facebook.com/logout.php?next=[redirect_uri]&access_token=[token]

但是,这不起作用,并默默地将我重定向回 facebook 主页。

目前我最好的猜测是 facebook 不喜欢我提供的“下一个”URI。我更新了我的 FB 应用设置,但它们尚未传播,或者其他东西仍然无法正常工作。

我看过推荐使用 InternetSetOption 的帖子,但该 API 在手机上不可用。

在我的应用程序流程中,注销会导致在我的应用程序中导航到不同的 silverlight 页面,所以我真的不需要浏览器重定向来达到我的目的,所以我可以“忘记”访问令牌而不实际告诉 FB使其无效,但这似乎很弱且不安全。

所以,当我等待更长时间查看应用程序域更改是否会在 FB 的服务器上传播并解决问题时,我有一个不同的问题:

为什么 Facebook API 应该关心我是否提供“下一个”?我不应该只是能够告诉他们使令牌无效并让它发生吗?

这里有没有我遗漏的逻辑部分?

谢谢!

【问题讨论】:

您指定的redirect_uri 什么?它是否正确地进行了 URL 编码? https 会话是否正确设置并且证书是否经过验证等等?当您在桌面浏览器上手动输入 URL 时,该 URL 是否有效? 不,它不能手动工作。我正在使用 silverlight 嵌入式 Web 控件,因此它在内部处理 SSL,但其他方面看起来还不错。我使用的redirect_uri 是mydomain.com,其中mydomain.com 列在应用程序的应用程序域中。 不要忘记在查询字符串中包含 http://。 :( @BitBlitz 我更新了我的答案 - 这在某种程度上是可能的,尽管不像它应该的那样直接。 【参考方案1】:

更新:我写了一个开源的Facebook login/logout control for WP7 允许这样做(查看示例项目)。它的工作原理基本上是使用 Web 浏览器控件导航到注销页面,然后通过将 javascript 注入 Web 浏览器控件来提交注销表单。这个想法来自这个blog post。

最接近的方法是通过向 /me/permissions 发出 HTTP DELETE 来撤销扩展权限,如文档 here 所述。简单地忘记身份验证令牌也不是一个坏选择,因为访问令牌通常只能使用一两个小时,除非您要求离线访问。如果用户过于担心,他们可以在 facebook.com 的设置页面上删除您的应用程序。

【讨论】:

好主意,但这是 C# SDK 的当前问题。请参阅:facebooksdk.codeplex.com/workitem/5926 如果不打补丁的话,用一个简单的 HttpWebRequest 调用就很容易了。 是的,是的 :) 下周假期结束后我回去工作时,我会这样做! @DMCS 我更新了我的答案。我在 WP7 上使用了这个注销(虽然它是一个 hack)。 感谢更新 :) 但是,我的解决方法是使用 FB.api() 调用在客户端做同样的事情。就像一个魅力,它甚至在几天前就通过了我的 QA 部门。

以上是关于facebook 注销 API - 为啥下一步?的主要内容,如果未能解决你的问题,请参考以下文章

强制注销facebook oauth

Facebook 的 Sharekit(Graph API 版本)注销方法未完全注销或取消授权用户

使用 facebook api 从我的应用程序中的 facebook 注销问题

Facebook API - javascript sdk:注销后状态显示“已连接”

如何确定用户是不是已使用 Graph API 从 Facebook iOS 注销?

如何在不使用 Facebook 登录/注销按钮的情况下以编程方式从 Facebook SDK 3.0 注销?