Я пытаюсь сделать веб-крючок для графа Microsoft.
(документ здесь: https://docs.microsoft.com/en-us/graph/webhooks)
Однако, когда Microsoft Graph отправляет мне POST, он отправляет мне этот URL:
9d065f52.ngrok.io/api/v1.0/user-calendar-settings/calendar-webhook/?validationToken=Validation%3a+Testing+client+application+reachability+for+subscription+Request-Id%3a+c340fcfe-a079-4dd8-85c5-8dc10c158250
но так как у него нет косой черты, я получаю эту ошибку:
RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 9d065f52.ngrok.io/api/v1.0/user-calendar-settings/calendar-webhook/?validationToken=Validation%3a+Testing+client+application+reachability+for+subscription+Request-Id%3a+c340fcfe-a079-4dd8-85c5-8dc10c158250 (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
Я ищу в Интернете, и решение состоит в том, чтобы изменить настройку APPEND_SLASH в файле settings.py
Однако я не могу этого сделать, мне нужно APPEND_SLASH
Кроме того, другое решение - просто добавить косую черту при POST, однако я не тот, кто POST, а граф Microsoft отправляет мне POST.
это представление, которое я создаю, чтобы график micrsoft отправлял мне POST:
# /api/v1.0/user-calendar-settings/calendar-webhook/
@action(
detail=False,
methods=["post"],
serializer_class=EmptySerializer,
url_path="calendar-webhook",
permission_classes=[AllowAny],
)
def calendar_webhook(self, request, pk=None):
"""
Notification endpoint validation for microsoft graph
"""
print(request.body)
validation_token = request.POST.get("validationToken", "")
import jwt
# jwt.decode(<encoded token>,<secret key>,<algorthm>)
decodedPayload = jwt.decode(validation_token, None, None)
return Response(
{"status": "ok"},
status=status.HTTP_200_OK,
content_type="text/plain",
data=decodedPayload,
)
Что мне делать?