2

也许以下内容听起来有点奇怪,我有一些错误的假设,所以我希望你能宽恕这一点。

简单介绍一下我们想要实现的目标:

现在我们正在开发一个需要后端存储用户特定数据(例如图像、评论等)的应用程序。由于我们想摆脱所有用户身份验证并且我们也想使用 facebook 功能,我们将让 Facebook 完成所有身份验证工作,并根据我们将在他们身份验证后收到的 id/email 创建一个用户。

让我们简单描述一下流程:

  1. 用户打开应用程序但未登录(Facbook SDK 将自行处理会话并保存 cookie)。
  2. 用户通过 Facebook 进行身份验证。
  3. 应用程序将 id 发送到服务器。如果存在 ID,服务器将返回,因此应用程序将显示某种注册(特定于域的表单)或将立即登录用户

现在是棘手的部分,我不确定如何处理。

由于后端的 API 是公共的(HTTPS),我们需要以某种方式确保用户是否已登录,然后才能通过应用程序获取他的数据。

仅仅说“哦,应用程序已经验证了他是用户,所以没有其他人会调用后端”是不够的。后端如何验证 api-consumment 是否真的通过他的 Facebook 登录进行了身份验证?我们希望避免任何人都可以使用他在设备上保存的 Facebook ID 调用我们的 REST 服务。

请记住:我们不希望在用户通过 Facebook 进行身份验证时为其分配密码。

也许我在这个用例中有某种奇怪的想法,所以请启发我!提前感谢所有答案和共享知识。期待!!

4

2 回答 2

0

如果您让服务器使用访问令牌获取用户信息,您可以执行以下操作:

  1. 进行客户端 OAuth 身份验证并接收访问令牌
  2. 将访问令牌发送到您的后端并使用此令牌通过 Facebook API 获取用户信息,包括 Facebook ID
  3. 服务器会将散列后的 ID ( cookie = id + ":" + hash(id + secret)) 存储在 HTTP cookie 中
  4. 做你的注册/登录的事情
  5. 在对服务器后端的每个请求中,将通过使用秘密重新计算哈希并将其与 cookie 中的值进行比较来验证 cookie 中的 id
于 2013-07-19T07:50:48.160 回答
0

我不知道您是否可以使用 facebook 模块对您的应用程序进行身份验证,但可以将后端视为像这样的服务提供商:apiOmat还提供“私有 beta 模块”,这意味着您可以要求功能。

于 2013-07-18T14:30:09.713 回答