服务(如Twilo,Plivo,Nexmo)验证Rails应用程序中的电话号码

A4J*_*A4J 5 twilio nexmo ruby-on-rails-4 plivo

我想在我的Rails 4应用程序中验证用户帐户的电话号码(只需向他们发送一个他们需要重新输入应用程序的四位数密码) - 哪些服务可用,哪些服务最少麻烦实现到Rails应用程序?

我想在国际上验证移动和固定电话号码,不过我的主要区域是欧洲,美国和加拿大,澳大利亚和新西兰(我位于英国).

Tim*_*tle 5

您的标题列出了三个主要的SMS API,因此对于可用的服务,您已经很好地理解了.但也有一些API专注于2FA/Verification.这是一些列表,值得注意的是,它往往集中在等式的用户方面(像Google Authenticator这样的东西).

由于您询问易于集成,2FA API(而不是SMS API)可能要容易得多(您不需要担心生成真正随机的OTP,或者如果用户不响应SMS则使用语音回退等).

Nexmo(免责声明:我在那里工作.)实际上提供了SMS/Voice API,以及在这些低级API之上构建的Verify API.

使用我们的验证API(无论2FA API是否相似),您都可以调用https://api.nexmo.com/verify/json并传递numberbrand(以识别您的应用)参数.响应将包含一个request_id,一旦用户提供了与您的应用程序code,你会同时通过request_idcodehttps://api.nexmo.com/verify/check/json.

因此,它是2个简单的API调用,在此期间,您将request_id与用户的会话相关联.以下是该流程快速入门.

特别是对于Nexmo,如果没有第二次API调用就有足够的时间,则会再次发送代码,这次是语音呼叫(或者,如果号码是固定的,则只是以语音开头).

使用我们的SMS API(再次,无论API如何都是类似的)首先你会生成一个代码 - 这听起来似乎很简单,如果安全性是一个问题,你需要确保生成是真正随机的.

然后你将存储代码并发送短信.随着Nexmo,那将会是一种调用https://rest.nexmo.com/sms/jsontext您的消息,to以及from*.还存在安全问题,因为您将代码存储在与验证代码相同的服务器上.如果受到影响,验证流程也是如此.

最后,您将用户提供的代码与您存储的代码进行比较.

所以最麻烦的事情真的取决于你.是否更容易进行两次API调用并避免安全的代码生成/存储(并且可能免费获得语音回退)?或者DIY代码生成并减少集成到单个调用SMS API?