使用 Javascript API 登录时,它会返回带有许多参数的页面,例如访问令牌、用户 ID 和其他详细信息。如果我想将我的数据库中的一个用户与这个 Facebook 用户相关联,那将是我想要存储的数据片段以便以后能够查找它以进行身份验证?
换句话说,我应该存储哪个令牌,以便下次用户登录时,我可以在数据库中查找此令牌并对用户进行身份验证?
我会使用 UID,但欺骗另一个 UID 并冒充其他人似乎很容易。
谢谢!
使用 Javascript API 登录时,它会返回带有许多参数的页面,例如访问令牌、用户 ID 和其他详细信息。如果我想将我的数据库中的一个用户与这个 Facebook 用户相关联,那将是我想要存储的数据片段以便以后能够查找它以进行身份验证?
换句话说,我应该存储哪个令牌,以便下次用户登录时,我可以在数据库中查找此令牌并对用户进行身份验证?
我会使用 UID,但欺骗另一个 UID 并冒充其他人似乎很容易。
谢谢!
客户端欺骗不是您关心的问题。如果您基于 FB 身份验证显示 FB 内容,则 FB 负责该过程的完整性。
如果您使用此信息服务器端,那么您需要遵循不可欺骗的 OAuth 2.0 流程(据我所知),因为您将直接前往 FB 进行身份验证。
你不能混合这两种流程,因为你让自己容易受到攻击。
要回答您的另一个问题,是的,您应该将您的数据库链接到 UID,因为 access_token 会改变。
您可以使用 fb js sdk 验证 fb 访问令牌。所以你可以把 fb-uid 作为保存。您从 fb 获得的令牌仅在有限的时间内有效,因此您不应保存它们。
更新: 关于 fb-uid 的保存性:您的 PHP 脚本从 facebook 获得签名请求。该请求使用您的应用程序的机密签名,因此其他人无法读取该数据。该请求包含当前用户的 fb-session(包括 uid)和访问令牌。