如何让Twilio的RequestValidator工作

时间:2017-05-13 22:22:55

标签: python django twilio

我不确定为什么这不起作用。我一直在看Twilio的文档here,我试着把它作为一个函数调用,但是没有用,所以我把它直接放在我的视图中,它仍然没有#&# 39;工作。它总是返回403。

我已经验证我的身份验证令牌与Twilio上的令牌相同。

from braces.views import CsrfExemptMixin
from django.http import HttpResponse, HttpResponseForbidden
from twilio.util import RequestValidator
from secretphone.settings import TWILIO_AUTH_TOKEN


class SMSWebhook(CsrfExemptMixin, View):
    def post(self, request):
        validator = RequestValidator(TWILIO_AUTH_TOKEN)
        request_valid = validator.validate(
            request.build_absolute_uri(),
            request.POST,
            request.META.get('HTTP_X_TWILIO_SIGNATURE', '')
        )

        if not request_valid:
            return HttpResponseForbidden()

1 个答案:

答案 0 :(得分:2)

所以没有人遇到同样的问题,也没有回答,显然ngrok的https网址没有传递给django。我的问题是我的webhook是使用ngrok的https链接传递的,但当它到达我的应用程序时,它改为http链接。我的猜测是request.build_absolute_uri()从django(webserver)本身获取协议,它使用http作为协议。

所以在使用ngrok时遇到此问题的任何人都要确保您没有使用https链接。