在默认应用程序中启用SMS 2FA(Twilio)



我正在尝试将Twilio与我的VS2015站点集成,很明显,Twilio上给出的示例是针对一个直接的MVC项目,并且有一个AccountController.cs,该代码块位于其中(步骤5/6)Twilio双因素身份验证

//
// POST: /Account/SendCode
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> SendCode(SendCodeViewModel model)
{
if (!ModelState.IsValid)
{
return View();
}
// Generate the token and send it
if (!await SignInManager.SendTwoFactorCodeAsync(model.SelectedProvider))
{
return View("Error");
}
return RedirectToAction("VerifyCode",
new { Provider = model.SelectedProvider,
ReturnUrl = model.ReturnUrl,
RememberMe = model.RememberMe });
}

我的项目没有这样的控制器,我在他们实现这个时遇到了一个错误

private readonly ITwilioMessageSender _messageSender;
public SmsService() : this(new TwilioMessageSender()) { }
public SmsService(ITwilioMessageSender messageSender)
{
_messageSender = messageSender;
}

CS0051可访问性不一致:参数类型"ITwilioMessageSender"的可访问性低于方法"SmsService.SmsService(ITwilioMessage Sender)">

错误指向:

public SmsService(ITwilioMessageSender messageSender)
{
_messageSender = messageSender;
}

总之,有一个错误我无法修复,还有一个问题我不知道这个步骤5/6代码块需要去哪里。如果这是一个需要进入的网络表单,它默认不会添加到这个项目中,但我不知道。如果有人能更好地理解这一点,我真的很感激你的帮助。

我最终遵循了这个例子,但您需要下载旧版本的Twilio.4.7.2,因为新版本不支持客户端。SendMessage()方法。VS2015还没有一个完整的代码示例可以处理所有的新内容。老实说,我试着让新版本发挥作用,但它不会。这个旧版本确实有效,我已经收到了来自我的网站的短信。最佳做法是,在web.config 中添加您的帐户信息

<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
...
<add key="ACCOUNT_SID" value="<YOUR SID>" />
<add key="AUTH_TOKEN" value="<YOUR LIVE TOKEN>"/>
<add key="CLIENT_PHONE" value="<YOUR ACCNT PHONE>" />
</appSettings>

在App_Start>IdentityConfig.cs中引用您的帐户变量。在Task SendAsynch 下查找类SmsService

public class SmsService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// add your Twilio code here
string ACCOUNT_SID = ConfigurationManager.AppSettings["ACCOUNT_SID"];
string AUTH_TOKEN = ConfigurationManager.AppSettings["AUTH_TOKEN"];
string CLIENT_PHONE = ConfigurationManager.AppSettings["CLIENT_PHONE"];
TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);
client.SendMessage(CLIENT_PHONE, message.Destination, message.Body);
return Task.FromResult(0);
}
}

当你注册时,Twillio会给你两个代币。。。并且不会告诉您其中一个只能在Twilio Account REST API控制台中使用。试用帐户只能向您用于注册的电话号码发送短信。因此,如果你在测试时没有收到该电话号码的短信,请换掉你的代币。

这已通过带有身份模型框架的VS2015默认网站应用程序进行了测试。我当然希望这能帮助其他人,这样他们就不需要花3个小时浪费时间在Twilio和STFW身上。

最新更新