0

这是一个身份验证流程,它仅使用提供的电话号码(Whatsapp 样式)登录用户。步骤是:

  1. 用户输入电话号码并发送到服务器。
  2. 服务器生成 4 位随机密钥,并将对(电话,密钥)保存在数据库中。
  3. 服务器要求第 3 方 SMS 服务将密钥发送到手机。
  4. SMS 服务发送消息。
  5. 用户从短信中输入密钥,并与手机一起发送到服务器。
  6. 服务器根据数据库检查该对。
  7. 如果对存在,服务器会发回一个令牌以供进一步调用。

在此处输入图像描述

我想了解的是 Twilio 和 Nexmo 等服务适合(或替换部分流程)的位置。

据我了解,以 Nexmo 为例,我可以将步骤 2 和 3 替换为 API 调用:
https ://api.nexmo.com/verify/ 并将数据库中响应中的request_id
保存为对(电话,request_id)。 现在,当用户输入一个 4 位代码并将其发回时, 我需要调用:https : //api.nexmo.com/verify/check/json 并为其提供 request_id 和代码。



但是我从哪里得到 request_id?
服务器是否需要在从 Nexmo 获取它的那一刻将其发送回客户端?
我在这里看不到使用 Nexmo 的好处,它将为我节省什么?

4

1 回答 1

2

回答您的第一个问题:request_id 是对第一个验证 API 调用的响应的一部分。请参阅:https ://docs.nexmo.com/index.php/verify/verify

至于这里的 Nexmo 有什么好处,我相信你有两种选择:

  1. 生成您自己的代码,使用 Nexmo 将其发送给您的用户,让用户将代码提交回您的应用程序,根据您自己的数据库验证代码。
  2. 使用 Nexmo 验证服务生成代码并将其发送给用户,将返回的 request_id 存储在您的数据库中,让用户向您的应用程序提交代码,调用 Nexmo 验证 API 来验证代码。

在某些方面,第一个选项更容易,因为它更少的 API 调用。然而,使用 Nexmo 验证的第二个选项的好处是,它们为服务提供了更多功能,如果 SMS 不起作用,则可以退回到语音呼叫,过滤掉虚拟电话号码以防止垃圾邮件,你不需要'不必为失败的 SMS 尝试、报告/分析等付费。

希望这会有所帮助。

于 2015-03-28T00:40:37.483 回答