web-services - 使用 Facebook OAuth 保护 REST API

标签 web-services api rest

我正在构建一个应用程序/API,允许用户使用 Facebook、Twitter 或 Google 登录。我想知道允许这些用户使用同一帐户登录 API 的最佳实践是什么。

  1. 我的一些想法是将 header 中的身份验证 token /cookie 传递给每个请求的 API,并使用它在后端进行身份验证。
  2. 运行我自己的 OAuth 设置,让用户通过后端进行一次身份验证,以获取我的 OAuth token 并从此使用这些 token 。

最佳答案

我正在做同样的事情,我的解决方案是匹配您从这些各自的 API 获得的电子邮件地址。

对于 Facebook,您需要获得最终用户的特殊许可才能在其中注册电子邮件地址。您可以通过将 &scope=email 添加到第一个 oauth 请求来实现此目的。

缺点是您需要从最终用户那里获得此许可,他们可能会拒绝。另一个缺点是用户需要对 Google、Facebook 和 Twitter 使用相同的电子邮件地址。

一个优点是用户记录会自动合并,因此如果用户第一次通过 Google 登录,第二次通过 Facebook 登录,则可以直接访问其所有数据。

另一种方法是在他们已经通过 Facebook 登录时手动合并他们的数据,让他们登录 Google。然后您可以断定他们是同一用户,即使他们使用不同的电子邮件地址。但这是一种更乏味的方法,因为您仍然需要合并两个帐户中的应用用户数据。

关于web-services - 使用 Facebook OAuth 保护 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327280/

相关文章:

android - 刷新数据 Android 应用程序

android - Drupal Android 应用程序登录持久性

android - 还有什么我尝试导入 "Unable to resolve target ' android- 出现 8'"错误

具有远程 jwt 身份验证的 Django REST

java - 什么可能导致 Retrofit 忽略方法调用?

java - JDBC 连接句柄应该是每个应用程序、每个线程还是每个查询?

带有 Jersey 和 Tomcat 的 Java Web 服务。 ¿如何在 Web 服务停止时停止所有线程?

php - 使用 API 将联系人添加到 dotmailer 地址簿

javascript - 包装主干同步请求

java - Jersey - 以编程方式获取 HOST IP 和 PORT