ArgumentError(需要帐户SID和身份验证令牌):

时间:2016-11-29 08:53:59

标签: ruby-on-rails ruby twilio

当我在表单字段中输入电话号码时出现以下错误

  

Apps :: TextyController中的ArgumentError#send_text

     

需要帐户SID和身份验证令牌

但我在代码中有Auth令牌和帐户SID。



module Messenger

  def send_sms(number)
    acct_sid = ENV['AC0b06exxxxxxxxxxxxx']
    auth_token = ENV['68ce616xxxxxxxxxxx']

     @client = Twilio::REST::Client.new acct_sid, auth_token

    from = '+6466817345'

    message = @client.account.messages.create(
        :from => from,
        :to => '+1'+number,
        :body => 'accept my application'
        )
  end

end




我使用的是旧的Ruby -v 2.2.0和Rails 4。

这是texty_controller.rb



class Apps::TextyController < ApplicationController

  def index
    @phone = Phone.new
  end

  def send_text
    @phone = Phone.new(phone_params)
    @phone.send_sms(@phone.clean_number)
    @phone.save
    redirect_to :back
  end

  private

  def phone_params
    params.require(:phone).permit(:number)
  end

end
&#13;
&#13;
&#13;

which is a clone from the following website

2 个答案:

答案 0 :(得分:2)

您如何将SID和Auth Token存储为环境变量?规范是将它们保存在application.yml文件中,并将它们命名为 TWILIO_AUTH_TOKEN =&#39; AUSHXU ******&#39; TWILIO_ACCOUNT_SID =&#39; SUHXB823 *****&#39;

然后使用ENV [&#39; TWILIO_AUTH_TOKEN&#39;]调用它们。

您是否尝试在控制台中调用环境变量?如果你得到nil意味着你没有正确访问它们,那么你的acct_sid和auth_token局部变量就是零。

答案 1 :(得分:1)

我通过执行以下步骤修复了此问题。

1)我通过以下方式保存acct_sid和auth_token来修改messenger.rb文件:

acct_sid = 'AC0b06exxxxxxxxxxxxx'

auth_token = '68ce616xxxxxxxxxxx

2)然后在保存文件后我继续使用终端并从那里导出环境变量:

export TWILIO_AUTH_TOKEN=AC0b06exxxxxxxxxxxxx

export TWILIO_ACCOUNT_SID=68ce616xxxxxxxxxxx

3)在第三步中,我转到messenger.rb文件,并按以下方式修改了acct_sid和auth_token。

acct_sid = ENV['TWILIO_ACCOUNT_SID']

auth_token = ENV['TWILIO_AUTH_TOKEN']

确保您使用的是TWILIO实时凭据。测试凭据仅限于three resources