问题描述
|
使用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会话(包括uid)和访问令牌。