Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Heroku上使用Python SDK时,Twilio返回一个未经授权的值_Python_Rest_Heroku_Flask_Twilio - Fatal编程技术网

在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未经授权的
错误

我的服务器的工作原理如下:

  • 首先,从我的手机上,信息会传到Twilio
  • Twilio通过
    /
    向我的应用发送请求
  • 应用程序将短信正文转发到另一个号码,使用创建并向该号码发送消息
  • Twilio确实希望将号码转发到我的Heroku应用程序,我已经在号码上列出了回调URL。 我还检查了Heroku中的所有环境变量,它们是正确的,包含正确的键等等,并且命名正确

    我的应用程序:

    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?我会给他们的支持团队发一张罚单看看。不确定为什么它没有使用正确的凭据进行身份验证。非常感谢你的帮助。