在Heroku上使用Python SDK时,Twilio返回一个未经授权的值
如果我用在Heroku上使用Python SDK时,Twilio返回一个未经授权的值,python,rest,heroku,flask,twilio,Python,Rest,Heroku,Flask,Twilio,如果我用ngrok在本地运行我的消息转发服务器,它可以工作,但是如果我部署它,我会得到一个401未经授权的错误 我的服务器的工作原理如下: 首先,从我的手机上,信息会传到Twilio Twilio通过/向我的应用发送请求 应用程序将短信正文转发到另一个号码,使用创建并向该号码发送消息 Twilio确实希望将号码转发到我的Heroku应用程序,我已经在号码上列出了回调URL。 我还检查了Heroku中的所有环境变量,它们是正确的,包含正确的键等等,并且命名正确 我的应用程序: from flask
ngrok
在本地运行我的消息转发服务器,它可以工作,但是如果我部署它,我会得到一个401未经授权的
错误
我的服务器的工作原理如下:
/
向我的应用发送请求from flask import Flask, request, redirect
from twilio.rest import TwilioRestClient
import twilio.twiml
import os
# log to stderr
import logging
from logging import StreamHandler
app = Flask(__name__)
file_handler = StreamHandler()
app.logger.setLevel(logging.DEBUG) # set the desired logging level here
app.logger.addHandler(file_handler)
# if getting variables from config py file use:
# app.config.from_pyfile('path/to/config/config.py')
# if using variables from environment variables
print os.environ.keys()
client = TwilioRestClient(os.environ['ACCOUNT_SID'], os.environ['AUTH_TOKEN'])
shannon = os.environ['SHANNON']
nic = os.environ['NIC']
twilio_number_uk = os.environ['TWILIO_NUMBER_UK']
twilio_number_us = os.environ['TWILIO_NUMBER_US']
@app.route("/", methods=['GET', 'POST'])
def forwardMessages():
"""Forwards texts from Shannon (US) to Nic (UK) through Twilio API.
Useful for those without international texting"""
app.logger.debug("We're in the home request")
sender = request.values.get("From")
sms_body = request.values.get("Body")
if sender and sms_body:
if sender == shannon:
# if it's from Shannon
forward_number = nic
from_number = twilio_number_uk
#forward to NIC
else:
# if it's from not SHANNON
forward_number = shannon
from_number = twilio_number_us
# forward to Shannon
forward_message = client.sms.messages.create(to=forward_number, from_=from_number, body=sms_body)
resp = twilio.twiml.Response()
app.logger.debug("Response from Twilio: " + str(resp))
return str(resp)
else:
return "Got your request"
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
print "Magic happenin' on port %d" % port
app.run(host='0.0.0.0', port=port)
app.run(debug=True)
我让很多人看了这个,没人能弄明白!
请帮忙 你查过环境。从操作系统管理面板(或类似面板)或在运行时远程计算机上的变量?我看到您有调试打印键,但没有值。尝试使用硬编码凭据以限制问题。尝试添加调试语句以打印正确的值,但仍返回401身份验证错误。也许我在Twilio的python客户端中遇到了一个bug?我会给他们的支持团队发一张罚单看看。不确定为什么它没有使用正确的凭据进行身份验证。非常感谢你的帮助。