处理用户身份验证(通过 Facebook)和应用程序内的安全通信

2024-01-23

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

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

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

我们简单描述一下流程:

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

现在是棘手的部分,我不知道如何处理这个问题。

由于后端的 API 是公共的 (HTTPS),我们需要以某种方式确保用户在能够通过应用程序获取数据之前先登录。

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

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

也许我在这个用例中有一些奇怪的想法,所以请赐教! 感谢您提前提供所有答案和共享知识。期待!!


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

  1. 进行客户端 OAuth 身份验证并接收访问令牌
  2. 将访问令牌发送到您的后端,并使用此令牌通过 Facebook API 获取包括 Facebook ID 在内的用户信息
  3. 服务器将存储散列 ID (cookie = id + ":" + hash(id + secret)) 在 HTTP cookie 中
  4. 做你的注册/登录事情
  5. 对服务器后端的每个请求都会通过重新计算带有密钥的哈希值并将其与 cookie 中的值进行比较来验证 cookie 中的 id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理用户身份验证(通过 Facebook)和应用程序内的安全通信 的相关文章

随机推荐

  • 将日志发送到 Crashlytics 而不会导致应用程序崩溃

    如何让 Crashlytics 接收日志而不让我的应用程序崩溃 我有以下代码 if context managedObjectContext save error CLS LOG error description 发生错误时 我希望 Cr
  • Jsoup 遇到特殊 HTML 符号问题,‘ — 等

    我有一些 HTML 字符串 我通过 Jsoup 放置这些内容 这样我就可以向所有 href 和 src 属性添加一些内容 效果很好 然而 我注意到对于一些特殊的 HTML 字符 Jsoup 正在将它们从 ldquo 到实际角色 我输出之前和
  • 在线程之间同步/发送数据

    该应用程序是用 Delphi XE 编写的 我有两个类 TBoss 和 TWorker 它们都基于 Thread TBoss是一个单实例线程 它启动后会创建大约20个TWorker线程 当 Boss 创建 TWorker 实例时 它会为其分
  • 在 PHP 中解析时需要在 JSON feed 中保留反斜杠

    以下是我们的 JSON 源之一的示例 wiggins id bkstir 04380 wdr q alertcolour yellow infohvr infoclk warning 10 warnhvr There are 10 file
  • 学习使用线程来防止数据竞争情况

    以下代码应该通过在公共端使用同步方法来防止数据争用 但由于某种原因 输出始终是 19915 19980 如果不是数据竞赛的话不应该是20000吗 public class SyncVarDataRace extends Thread pri
  • 在调试和生产模式之间切换

    开发时调试应用程序的一种快速方法是编写如下语句 print data 有没有办法在切换到生产模式时停止打印 这样就不会影响应用程序的性能 例如 布尔值作为开关 您可以使用debugPrint代替print仅用于开发日志记录 debugPri
  • inverse_of 在 mongoid 中意味着什么?

    What inverse of是什么意思 通过使用它而不是没有它的关联我能得到什么 在简单关系中 两个模型只能以一种方式关联 并且关系的名称自动是与其相关的模型的名称 这在大多数情况下都很好 但并不总是足够 inverse of允许您指定您
  • 如何修改主机头

    我正在尝试开发一个 chrome 扩展 它可以根据某些请求设置 主机 标头 但对于是否可以修改 host 标头 文档是矛盾的 这两个问题都表明a 这不应该是可能的 b 这是不可能的https code google com p chromi
  • 文本链接不会在 Safari 中使用名称通过 JavaScript 提交表单

    我正在使用 Safari 5 0 3 我的 html 中有一个表单
  • 这第二个新的是什么?

    第二行是什么 在回答另一个问题时看到的 int x new int 1 int y new x int 第二行之后 x 和 y 具有相同的值 指向相同的位置 y x 和第二行有什么区别 它像构造函数还是什么 It s 安置新 http en
  • 无法自动装配。存在多个“DataSource”类型的 bean

    我正在尝试通过以下方式自动连接数据库 Autowired private DataSource dataSource 我的数据源中有一个application yml spring profiles active dev spring pr
  • ASP.NET -> WCF 服务需要 Windows 身份验证

    我的任务是构建一个基本的管理应用程序 该应用程序需要一个 ASP NET 前端 该前端使用 WCF 与许多后端服务进行通信 一项要求是应用程序的用户使用 Windows 身份验证进行身份验证 如果应用程序逻辑包含在 ASP NET 应用程序
  • 如何改变CKEditor的编辑器大小?

    由于它是一个 textarea 我在 html 属性中尝试了 cols 50 但它不起作用 另外 我从上一个问题中找到了答案 他说我可以通过添加来做到这一点 CKEDITOR instances myinstance resize 1000
  • “JqueryStatic”类型的值不可调用

    我正在开发一个打字稿项目 当我调用 时 编辑器显示 JqueryStatic 类型的值不可调用 我安装了 jquery definetelyTyped 包 并且还引用了 jquery d ts 文件 Resharper 9 0 不支持 Ty
  • 如何使用zxing条码扫描库解码EAN128条码

    我正在尝试使用 zxing 条码扫描库读取 EAN128 条码 我在 Xamarin 共享项目中使用它 如下所示 private async void OnButtonForBarcodeReadPressed object sender
  • 为什么 pfpd.add_font() 中没有加载字体?

    我正在尝试将 pfpdf 库中的字体添加到生成的 pdf 文件中 但将 DejaVuSans ttf 移动到 data 目录后 无法再找到字体 这是一个简化的代码 from fpdf import FPDF import os pdf FP
  • 如何计算 DFT 中每个 bin 的能量?

    我正在测试我对离散傅里叶变换的了解 我现在测试的是如何使用DFT计算波的中心频率 为此 我使用以下代码创建正弦数据 create a 100 Hz wave with a sampling rate of 512 samples per s
  • 将 Q_GADGET 中的 Q_INVOKABLE 公开给 QML

    我最初的目标是在 QML 中提供枚举的名称 该名称可以通过 QMetaEnum 和 QVariant 的 toString 提供 这两者在 QML 中都不可用 Stack Overflow 上的文章展示了如何将 Q INVOKABLE 添加
  • 针对数据类型的张量流警告

    我已经在Python 3 7 4 64位 中安装了tensorflow和numpy 当我尝试导入它时 我收到以下警告 home user local lib python3 7 site packages tensorflow python
  • 处理用户身份验证(通过 Facebook)和应用程序内的安全通信

    也许下面的内容听起来有点奇怪 我有一些错误的假设 所以我希望你能原谅这一点 只是简单介绍一下我们想要实现的目标 现在我们正在开发一个应用程序 需要一个存储用户特定数据 例如图像 评论等 的后端 由于我们想要摆脱所有的用户身份验证 并且我们也