我不确定为什么这不起作用。我一直在看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()
答案 0 :(得分:2)
所以没有人遇到同样的问题,也没有回答,显然ngrok的https网址没有传递给django。我的问题是我的webhook是使用ngrok的https链接传递的,但当它到达我的应用程序时,它改为http链接。我的猜测是request.build_absolute_uri()
从django(webserver)本身获取协议,它使用http作为协议。
所以在使用ngrok时遇到此问题的任何人都要确保您没有使用https链接。