当我在表单字段中输入电话号码时出现以下错误
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;
答案 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。