7

我正在使用 Passport 使用 Facebook 进行注册/身份验证。当 oAuth 成功时,我返回:

  • accessToken
  • refreshToken
  • profile

现在...当用户使用 Facebook 成功注册时,我存储accessTokenprofile信息。当有人想登录并再次执行 oauth 动作时,我的应用程序再次获得accessTokenand profile. 麻烦的是,accessToken不一样。我实际上希望在第一次身份验证后 accessToken 是相同的......

此时,我正在将我自己的本地用户与id个人资料中的 facebook 字段连接起来。但是......我将如何实际使用accessToken?保留它甚至有意义吗?如果是这样,我为什么要保留它?

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

4

2 回答 2

10

如果您想代表您通过 facebook 登录的用户查询 facebook 的 API,则需要保留 accessToken。如果您只想将 facebook 用于登录,您可以放弃它。例如,如果您想向 facebook 询问用户的最新状态更新,则需要在进行 API 调用时将该 accessToken 作为参数包含在内。accessToken 的重点是它允许代表用户进行一组操作,但它会过期,因此如果它落入坏人之手,它就不能像永久令牌或用户的实际密码那样造成如此大的损害。每次设计都会有所不同。

于 2013-06-16T17:47:12.883 回答
4

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

  1. 让用户通过facebook登录
  2. 根据您数据库中的 facebook id 检查他们的 facebook id。

访问令牌经常过期,如此处所述

于 2013-06-16T17:47:04.507 回答