【问题标题】:Can I de-authorize a Facebook app and log the user out at the same time?我可以取消对 Facebook 应用程序的授权并同时将用户注销吗?
【发布时间】:2013-02-28 00:58:33
【问题描述】:

我想让用户退出我的应用程序删除他们的权限

我目前使用的是 JS-SDK,没有服务器端逻辑。

我知道我可以使用FB.logout() 注销用户

我还可以使用FB.api('/me/permissions', 'DELETE') 撤销他们的权限以“取消授权”该应用

问题是,我似乎不能两者都做。每个似乎都在阻止另一个工作。

示例:

  • 致电FB.api('/me/permissions', 'DELETE', function(){FB.logout()});

    导致以下错误:

    “拒绝显示文档,因为 X-Frame-Options 禁止显示。”

  • 来电:FB.logout(function(){FB.api('/me/permissions', 'DELETE');})

    导致用户被注销,但权限仍然存在。

【问题讨论】:

  • “同时做这两件事”到底是什么样的?如果您一个接一个地调用这些异步方法,那就可以解释问题了。尝试在api调用的回调函数中调用logout。
  • 查看我新添加的示例
  • 好吧,我可能实际上已经修复了它(仍然需要做一些测试)。我只尝试过将一个作为另一个回调,或者将它们单独输入到控制台中。实际上,“一个接一个地调用它们”似乎是使其工作的唯一方法:FB.logout();FB.api('/me/permissions', 'DELETE'); 我猜这是因为它能够在另一个返回之前开始这两个异步调用。
  • 嗯,这不是我会依赖的东西完全
  • 是的,哈哈。这就是为什么我一开始都没有尝试过的原因;但实际上这似乎是针对我的具体情况的合理解决方案 - 我只是想在我的开发环境中添加一些调试控件,这样我就可以快速从头开始,而无需在 facebook.com 上手动执行任何操作

标签: facebook facebook-graph-api facebook-javascript-sdk


【解决方案1】:

回答我自己的问题:

经过大量研究和实验,我得出结论,没有可靠的方法可以做到这一点。

我能够确定以下代码有效 - 尽管我不建议在生产应用中使用它。

FB.logout();
FB.api('/me/permissions', 'DELETE');

显然,一个接一个地调用它们是有效的(而不是使用回调来调用它们)。一旦它们中的任何一个完成,它就会阻止另一个启动,但如果我快速连续进行异步调用,它似乎让两者都成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多