处理用户身份validation(通过Facebook)并在应用程序内保护通信
也许以下听起来有些奇怪,我有一些错误的假设,所以我希望你能宽恕这一点。
简要介绍一下我们想要实现的目标:
现在我们正在开发一个需要后端存储用户特定数据(例如图像,评论等)的应用程序。 由于我们想要摆脱所有用户身份validation,我们也想使用Facebookfunction,我们将让Facebook完成所有身份validation的工作,并根据我们将在身份validation后收到的ID /电子邮件创建用户。
我们简要介绍一下这个流程:
- 用户打开应用程序并且未登录(Facbook SDK将自行处理会话并保留cookie)。
- 用户通过Facebookvalidation。
- App将id发送到服务器。 如果存在id,则服务器将返回,因此应用程序将显示某种注册(域特定表单)或将立即登录用户
现在是棘手的部分,我不知道如何处理这个问题。
由于后端的API是公共的(HTTPS),我们需要以某种方式确保用户在能够通过应用程序获取数据之前登录。
仅仅说“哦,应用程序validation了他是用户,所以没有其他人会调用后端”是不够的。 后端如何通过Facebook登录validationapi消耗是否真正通过身份validation? 我们希望避免任何人可以使用他在设备上持久保存的Facebook ID来调用我们的REST服务。
请记住:我们不希望在用Facebook进行身份validation时为用户分配密码。
也许我在这个用例中有一些奇怪的想法,所以让我高兴吧! 感谢您提前获得的所有答案和共享知识。 期待!!
如果您使服务器使用访问令牌获取用户信息,您可以执行以下操作:
- 进行客户端OAuth身份validation并接收访问令牌
- 将访问令牌发送到您的后端,并使用此令牌获取包含Facebook API和Facebook API的用户信息
- 服务器将散列ID(
cookie = id + ":" + hash(id + secret)
)存储在HTTP cookie中 - 做你的注册/登录事情
- 在对服务器后端的每个请求中,将通过重新计算带有秘密的哈希并将其与cookie中的值进行比较来validationcookie中的id
我不知道你是否可以使用facebook模块validation你的应用程序,但看看后端作为这样的服务提供商: apiOmat还提供“私人beta模块”,这意味着你可以要求function。