【问题标题】:Determine if user still hasn't removed App from his Facebook account确定用户是否还没有从他的 Facebook 帐户中删除应用程序
【发布时间】:2014-01-04 15:41:34
【问题描述】:

我已经设法让用户通过 Facebook 登录我的网站。它是这样工作的:

  • 用户访问我的网站并选择使用 Facebook 登录
  • 用户前往 Facebook 授权我的应用
  • 如果应用获得授权,用户将返回我的网站并注册到我的数据库中
  • 用户通过我的网站设置的 cookie 保持登录状态

我从 Facebook 存储这些信息:用户名、电子邮件和 ID。

如果发生以下情况会发生什么:

  • 用户从 Facebook 注销并且仍然登录到我的网站?我仍然拥有让用户保持在线的 cookie 和会话,因此即使用户没有登录 Facebook,我的用户仍然可以从我的网站中受益。这种行为是正常的还是应该避免?
  • 用户从他的授权应用列表中删除了我的 Facebook 应用?该用户现在是我的数据库的一部分,但该用户从他的帐户中删除了该应用程序。我应该如何处理?如何检查 App->Website 连接对该用户是否仍然有效?如果用户从他的帐户中删除了该应用程序,我是否也应该将他从我的数据库中删除?如果是,那么我该如何进行检查?

还有很多其他的事情让我感到困惑,我想我应该在以后为这些人专门提出另一个问题。

我正在使用 Facebook PHP SDK 来完成所有这些任务。

P.S:我只使用 Facebook 作为我网站的身份验证方法,仅此而已。

【问题讨论】:

    标签: php facebook facebook-graph-api authentication


    【解决方案1】:

    为了回答您的问题,我们为 facebook connect 做了几件事

    • 如果用户选择使用 FB 连接创建帐户,我们会抓取 名字、姓氏、电子邮件、fb_userid 等详细信息,然后保存到 我们的数据库。

    • 如果同一用户出现时,用户必须单击 FB 登录按钮,如果 API 返回 fb_userid 在我们的数据库中,我们会检查 我们的数据库并处理登录并授予对用户页面的访问权限。

    • 因此,理想情况下,我们永远不会将 fb_userid 存储在 cookie 中,并且下次如果用户来,只需执行自动登录。

    • 现在如果用户从 FB 中删除应用程序,由于我们不允许通过 cookie 保存的数据自动登录,用户必须单击登录按钮然后重新授权应用程序。由于 fb_userid 已经在我们的数据库中,所以我们在授予权限后检测用户并让他们登录。

      • 在我们的案例中,我们有一个优势,即我们的网络应用程序需要每月订阅,因此用户必须为此付费。所以通常想要继续的人会来到我们的网站并取消帐户,然后我们会删除用户信息,这样 fb_userid 也会在我们结束时被删除。这让我们不必担心如果用户从他们的 FB 中删除该应用会怎样,因为如果有人必须取消,他们会从我们的网站上执行,因为他们是按月定期计费的。
      • 我想你的情况与上述不同,所以你可以在不违反任何条款和条件的情况下执行以下操作

        • 不要将会话存储在 cookie 中,让用户使用 FB 按钮登录 每次他们访问您的网站时。同时在你的 FB登录按钮旁边的网站为“这是什么?”可能是一种工具 提示并提及该网站将存储用户 fb_userid 和 这不会与任何第 3 方共享。
        • 还提到,如果他们从他们的 facebook 中删除应用程序,ID 将仍然存在于我们的数据库中并创建 取消帐户页面,用户可以在其中取消帐户,但是 需要用户登录。一旦他们取消帐户删除 您数据库中的 FB id。
      • 最后,我认为任何 API 调用都不能用于查看用户是否为离线用户删除了该应用,但可以将使用 FB 连接不同权限登录到您的站点的人检查为

      $permissions = $facebook->api("/me/permissions");

    【讨论】:

    • 谢谢。不过这里有一点:我没有将 FB 用户 ID 存储在 cookie 中。 cookie 具有非常复杂的内容,在检查以验证用户的真实性时会负责解密。我在正常登录过程中使用完全相同的 cookie 方法来保持用户登录(如果他们愿意)。我想我得更新我的隐私政策了。
    • 是的,最好通过隐私政策让用户知道,这样他们就清楚了。
    【解决方案2】:

    如果应用需要 Facebook,那么您需要测试您提到的案例并生成适当的错误消息。除此之外,您只需为用户提供明显的清理方法,例如有效的卸载命令。

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2012-05-30
      相关资源
      最近更新 更多