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

时间:2017-07-23 01:39:58

标签: visual-studio-2015 twilio

我正在尝试将Twilio与我的VS2015站点集成,我明白Twilio上给出的示例是针对一个直接的MVC项目,并且有一个AccountController.cs,其中代码块(步骤5/6){{3 }}

//
    // 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可访问性不一致:参数类型&#39; ITwilioMessageSender&#39;比方法&#39; SmsService.SmsService(ITwilioMessageSender)&#39;

错误指向:

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

总之,我无法解决1个错误,1个问题,我不知道这个步骤5/6代码块需要去哪里。如果这是一个需要进入的webform,默认情况下它没有被添加到这个项目中,但我不知道。如果有人更了解这一点,我真的很感激一些帮助。

1 个答案:

答案 0 :(得分:0)

我最后关注this示例,但您需要下载旧版Twilio.4.7.2,因为较新版本不支持client.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&gt;中引用您的帐户变量IdentityConfig.cs。找到类SmsService并在Task SendAsynch

下找到
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帐户REST API控制台中使用。试用帐户只能向您用于注册的电话号码发送短信。因此,如果您在测试时没有收到该电话号码的短信,请换掉您的令牌。

使用身份模型框架对VS2015默认网站应用程序进行了测试。我当然希望这可以帮助别人,所以他们不需要花费3小时在Twilio和STFW上浪费时间。