使用 Facebook 的 Web 应用程序持久身份验证


Web app persistent authentication with Facebook

我有一个网络应用程序,它有一个~使用Facebook ID登录~按钮,它是用PHP SDK实现的。它像往常一样工作。用户被重定向到Facebook。Facebook将他们重定向回网络应用程序。Web 应用程序获取他们的信息并创建有关他们的数据库记录。

问题是这些登录不是持久性的。下次同一用户打开 Web 应用时,它将无法识别他们。

我应该如何解决这个问题?

有几种方法:

  1. 使用类似于普通表单登录的记住我 cookie。要提高安全措施,您可能需要使用 Facebook API 执行检查(如果用户相同):
    1. 在您的数据库中关联 Facebook OAuth 令牌和"记住我"cookie 令牌。
    2. 当用户使用"记住我cookie"创建新会话时,您可以检查(使用客户端代码)相应的Facebook令牌是否有效,并且用户是否仍然使用您的应用程序登录。
  2. 仅存储 Facebook 令牌客户端(本地存储)。在随后的会话中,您可以通过Facebook API和存储的令牌检查用户是谁。不过,这种方法速度较慢。

在任何情况下,您都希望将短期的 Facebook 访问令牌交换为长期访问令牌1,并将其存储在您的数据库中。

详细了解访问令牌2

1: https://developers.facebook.com/docs/facebook-login/access-tokens#extending
2:https://www.sammyk.me/access-token-handling-best-practices-in-facebook-php-sdk-v4