也许下面的内容听起来有点奇怪,我有一些错误的假设,所以我希望你能原谅这一点。
只是简单介绍一下我们想要实现的目标:
现在我们正在开发一个应用程序,需要一个存储用户特定数据(例如图像、评论等)的后端。由于我们想要摆脱所有的用户身份验证,并且我们也想使用 Facebook 的功能,因此我们将让 Facebook 完成所有的身份验证工作,并根据我们在身份验证后收到的 ID/电子邮件创建一个用户。
我们简单描述一下流程:
- 用户打开应用程序但未登录(Facebook SDK 将自行处理会话并持久保存 cookie)。
- 用户通过 Facebook 进行身份验证。
- 应用程序将 id 发送到服务器。如果存在 ID,服务器将返回,因此应用程序将显示某种注册(域特定形式)或立即登录用户
现在是棘手的部分,我不知道如何处理这个问题。
由于后端的 API 是公共的 (HTTPS),我们需要以某种方式确保用户在能够通过应用程序获取数据之前先登录。
仅仅说“哦,应用程序已经验证了他是用户,所以没有其他人会调用后端”是不够的。后端如何验证 api-consument 是否真的通过 Facebook 登录进行了身份验证?我们希望避免任何人都可以使用他保存在设备上的 Facebook ID 来调用我们的 REST 服务。
请记住:我们不想在用户通过 Facebook 进行身份验证时为其分配密码。
也许我在这个用例中有一些奇怪的想法,所以请赐教!
感谢您提前提供所有答案和共享知识。期待!!
如果您让服务器使用访问令牌获取用户信息,您可以执行以下操作:
- 进行客户端 OAuth 身份验证并接收访问令牌
- 将访问令牌发送到您的后端,并使用此令牌通过 Facebook API 获取包括 Facebook ID 在内的用户信息
- 服务器将存储散列 ID (
cookie = id + ":" + hash(id + secret)
) 在 HTTP cookie 中
- 做你的注册/登录事情
- 对服务器后端的每个请求都会通过重新计算带有密钥的哈希值并将其与 cookie 中的值进行比较来验证 cookie 中的 id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)