Twilio仅返回本地计算机的身份验证错误

Mat*_*man 3 ruby-on-rails twilio

我的团队和我正在使用twilio发送短信.一切似乎在其他人的本地机器上运行正常(具有相同的确切代码),除了twilio总是向我返回一个验证错误.我正在将消息发送到他们的"特殊号码",因此它实际上不会发送真正的短信,但它仍会返回验证错误.

这是我们发送消息的一些代码:

def send_sms
  self.from_phone_number = CONFIG['live_twilio'] ? self.customer.assigned_phone_number : CONFIG['test_phone_number']
  self.to_phone_number   = CONFIG['live_twilio'] ? self.customer.customer_phone_number : CONFIG['test_phone_number']

  begin
    report_to_new_relic_insights
    send_message_with_twilio!
  rescue Twilio::REST::RequestError => e
    self.error_description = e.message
  end

  self.dispatched_at = Time.now
  self.save(validate: false)

  return e
end

def send_message_with_twilio!
  unless self.customer.example_customer?
    twilio_params = {
      from: "+1#{from_phone_number}",
      to:   "+1#{to_phone_number}",
      body: self.text
    }

    if ENV['RECORD_TWILIO_STATUSES'].in?(['1', 'true'])
      twilio_params[:status_callback] = "#{CONFIG['secure_domain']}/messages/#{id}/update_status"
    end

    client.account.messages.create(twilio_params)
  else
    # @onboarding_flow
    # don't send the actual SMS to the example customer
    self.customer.send_reply_as_example_customer! if self.customer.first_reply?
  end
end

def client
   @client ||= begin
     account_sid = ENV['ACCOUNT_SID'] || CONFIG['account_sid']
     auth_token  = ENV['AUTH_TOKEN']  || CONFIG['auth_token']
     Twilio::REST::Client.new account_sid, auth_token
   end
end
Run Code Online (Sandbox Code Playgroud)

每次这一行都运行: client.account.messages.create(twilio_params)

它返回验证错误.除了我的以外,它适用于所有其他本地机器.所有代码完全相同,auth令牌完全相同.任何想法可能是什么问题?(auth令牌正从config.yml中提取出来

更多信息:即使在控制台中运行裸骨twilio客户端并在两台机器中使用相同的确切信息,我的返回错误,我的同事返回有效

Mar*_*ona 5

Twilio福音传教士在这里.

这可能是众多事情之一,但Twilio抱怨身份验证的唯一原因是,如果您有错误的帐户SID或身份验证令牌.

所以可以保证这是出错的一点:

def client
   @client ||= begin
     account_sid = ENV['ACCOUNT_SID'] || CONFIG['account_sid']
     auth_token  = ENV['AUTH_TOKEN']  || CONFIG['auth_token']
     Twilio::REST::Client.new account_sid, auth_token
   end
end
Run Code Online (Sandbox Code Playgroud)

我的建议是你打开你的终端并运行:

$ printenv
Run Code Online (Sandbox Code Playgroud)

这应该为您打印所有环境变量.您对ACCOUNT_SID和AUTH_TOKEN感兴趣,因此您可以从终端获取这些特定值,如下所示:

$ printenv | grep "ACCOUNT_SID\|AUTH_TOKEN"
Run Code Online (Sandbox Code Playgroud)

如果您使用相同的值,请与您的同行核实.请让我知道结果.