使用Facebook和Passportjs进行身份validation:什么是accessToken,注册后应该存储什么?

我正在使用Passport来注册/使用Facebook进行身份validation。 oAuth成功的时候,我回来了:

  • accessToken
  • refreshToken
  • profile

现在…当用户成功注册使用Facebook,我存储accessTokenprofile信息。 当有人想要login,并再次通过oauth动作,我的应用程序再次获取accessTokenprofile 。 麻烦的是, accessToken是不同的。 我真的希望accessToken是第一次validation后是相同的…

在这一点上,我连接我自己的本地用户与configuration文件中的Facebook的id字段。 但是…我怎么实际上使用accessToken? 保持它是否有意义? 如果是这样,为什么我会保留它?

我实际上期望accessToken是相同的,并使用它来匹配成功的login。 我显然不能这样做…所以我很困惑!

你应该存储Facebook的ID。 它应该在profile对象中。 访问令牌将根据Facebook的授权政策而改变。 你应该做的是

  1. 让用户通过Facebooklogin
  2. 检查他的脸书ID在你的数据库中的脸书ID。

访问令牌经常按照此处所述过期

你需要保持accessToken,如果你想代表你的facebooklogin的用户查询Facebook的API。 如果您只想使用Facebooklogin,您可以放弃它。 例如,如果您想向facebook询问用户最近的状态更新,则需要在进行该API调用时将该accessToken作为参数包含在内。 accessToken的意义在于,它允许代表用户进行一组操作,但是如果它落入了错误的手中,它就不能用来造成像永久令牌或用户的实际密码那样大的伤害。 每次devise都会有所不同。