我正在尝试在Microsoft azure中注册我的web应用,以获得有关用户一次驱动器更改的通知。为此,我需要注册我的应用程序,以获得通知。你知道吗
我一直遵循这些指示:Create subscription
这里是Handling webhook validation requests
但是我需要一些帮助来验证webhook。 创建新订阅时,OneDrive将以以下格式向注册的URL(我的web应用或可能我将使用azure函数)发布请求:
POST https://contoso.azurewebsites.net/your/webhook/service?validationtoken={randomString}
Content-Length: 0
为了成功创建订阅,我的服务必须通过将validationtoken查询字符串参数的值作为纯文本响应返回来响应此请求。你知道吗
HTTP/1.1 200 OK
Content-Type: text/plain
{randomString}
我使用的是django,我如何像他们问的那样用python做出响应?你知道吗
这是我发送第一个post请求的方式
def create_subscription(token):
payload = {
"changeType": "updated",
"notificationUrl": notification_url,
"resource": "/me/drive/root",
"expirationDateTime": "2030-01-01T11:23:00.000Z",
"clientState": "client-specific string"
}
headers = {
"Authorization": token['access_token'],
"Host": "graph.microsoft.com",
"Content-Type": "application/json"
}
response = requests.post("https://graph.microsoft.com/v1.0/subscriptions".format(graph_url),
data=json.dumps(payload), headers=headers)
这就是我如何对微软的POST请求做出响应的
def validate_subscription(request):
if request.method == 'POST':
url = request.get_full_path()
parsed = urlparse.urlparse(url)
validation_string = parsed.query['validationtoken']
headers = {
"Host": "graph.microsoft.com",
"Content-Type": "text/plain"
}
r = requests.post("{0}/subscriptions".format(graph_url),
data=validation_string, headers=headers)
if (r.status_code == 200):
return HttpResponse("Subscription suceeded")
我们不断收到错误,上面写着“验证错误”
谢谢你们
因此,我所做的是使用大写字母“v”作为“validationtoken”,因此请求应该如下所示:
您不应该将
POST
请求发送回Graph,您应该使用它传入的令牌响应Graph的请求:POST
。你知道吗通知端点对
POST
的响应如下:相关问题 更多 >
编程相关推荐