使用Nexmo或Twilio仅使用电话号码登录和验证

时间:2015-03-25 17:35:28

标签: authentication twilio azure-mobile-services nexmo

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

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

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

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

    但是我从哪里得到request_id?
    服务器是否需要将它从Nexmo获取后发送回客户端? 我无法在这里看到使用Nexmo的好处,它会拯救我什么?

1 个答案:

答案 0 :(得分:2)

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

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

  1. 生成您自己的代码,使用Nexmo将其发送给您的用户,让用户将代码提交回您的应用程序,根据您自己的数据库验证代码。
  2. 使用Nexmo验证服务生成代码并将其发送给用户,将返回的request_id存储在您的数据库中,让用户向您的应用程序提交代码,调用Nexmo验证API以验证代码。
  3. 在某些方面,第一个选项更容易,因为API调用较少。然而,使用Nexmo Verify的第二个选项的好处是它们为服务提供了更多功能,以便在短信不工作时回退到语音通话,过滤掉虚拟电话号码以防止垃圾邮件,你不要我必须支付失败的短信尝试,报告/分析等等。

    希望这有点帮助。