为移动应用程序登录facebook的正确方法是什么(使用node.js/passport.js服务器)

Dmi*_*ink 10 node.js facebook-graph-api passport-facebook

我有一个与后端服务器一起使用的移动应用程序,我想了解使用Facebook登录(创建帐户)然后保持整个系统同步的最佳做法.

以下是我目前所了解的: - 移动应用程序可以在设备上进行登录并获取access_token - 访问令牌可以传输到服务器.我使用与某些api.myhost.com/auth/facebook路由挂钩的passport-facebook-token进行了概念验证,似乎我可以验证用户身份并检索他的FB数据.因此,我可以将他与我的数据库中的现有用户匹配或创建新记录.

我不明白:1)我必须使用https将FB令牌传输到我的服务器吗?

2)如何处理我应该进行身份验证的其他请求.我不认为每次请求都可以选择FB.想到的一个选项是生成另一个(我自己的)访问令牌,并作为FB身份验证的结果返回它.

最简单的方法是使用passport-facebook-token会话(以便cookie会话ID可以序列化并反序列化为用户ID).但这意味着我需要为会话维护一些KV存储空间.

另一种方法是为该用户生成我自己的随机令牌,在成功登录时将其与用户ID一起返回,将其存储在用户记录中,并让来自客户端的每个API调用提供此id /令牌对,并在每次手动重新验证它们时依靠护照.或者可能依靠护照本地策略?

哪一个更好?每个人的利弊是什么?

2)如果我打算使用FB令牌发布到FB并进行图形分析(朋友等),我打算将令牌存储在服务器上.我需要多久刷新一次?每次应用程序启动并刷新客户端上的令牌时,我是否应该使用新的FB令牌对我的服务器进行重新身份验证?如何通过服务器到服务器调用刷新用户FB令牌?如果我想保持对用户FB数据的访问权限,但是用户是否停止使用我或者很少使用它,我是否应该这样做?

有没有一个工作方案的食谱很好?

谢谢!

Mik*_*son 0

Facebook 令牌安全

您在移动应用程序客户端上创建的令牌适用于您在身份验证中为其提供 ID 的 Facebook 应用程序。当通过互联网传输令牌或任何其他易变信息时,我总是使用 HTTPS。

Facebook 令牌过期和刷新

当您在移动应用程序中进行身份验证时,您通常会在带有令牌的响应中获得令牌的到期时间。Facebook API中对令牌过期进行了解释。

使用 Facebook SDK 的本机移动应用程序将获得长期访问令牌,有效期约为 60 天。当使用您的应用程序的人向 Facebook 的服务器发出请求时,这些令牌将每天刷新一次。如果未提出请求,令牌将在大约 60 天后过期,并且用户必须再次执行登录流程才能获取新令牌。

关于刷新token:

即使是长期存在的访问令牌最终也会过期。在任何时候,您都可以通过将人员发送回您的 Web 应用程序使用的登录流程来生成新的长期令牌 - 请注意,该人员实际上不需要再次登录,他们已经授权了您的应用程序,因此他们会使用刷新的令牌立即从登录流程重定向回您的应用程序 - 这对用户的显示方式将根据您使用的登录流程类型而有所不同,例如,如果您使用的是 JavaScript SDK,这将发生在在后台,如果您使用服务器端流程,浏览器将快速重定向到登录对话框,然后自动立即再次返回您的应用程序。