为 Microsoft Graph API 创建订阅:订阅验证请求失败
Creating Subscription for Microsoft Graph API: Subscription validation request failed
我尝试为 Microsoft Graph 创建订阅 API。但是,我收到错误
Subscription validation request failed. Response must exactly match validationToken query parameter.
验证请求如下所示:
POST /?validationToken=Validation%3a+Testing+client+application+reachability+for+subscription+Request-Id%3a+c69b04df-f3d3-411c-8ceb-7f1ad8b7a927 HTTP/1.1
使用 FastApi,发送验证请求的 API 看起来像
from fastapi import FastAPI
app = FastAPI()
@app.post("/")
def read_call_record(validationToken):
data = {"validationToken": validationToken}
return data
返回的数据变量如下所示:
{'validationToken': 'Validation: Testing client application reachability for subscription Request-Id: c69b04df-f3d3-411c-8ceb-7f1ad8b7a927'}
有人可以帮忙
您的代码需要 Url 解码 validationToken
查询参数并将其 return 返回到 Graph。
来自 documentation,您的响应必须在 10 秒内发生并具有以下属性:
- A status code of
HTTP 200 OK
.
- A content type of
text/plain
.
- A body that includes the URL decoded validation token. Simply reflect back the same string that was sent in the
validationToken
query parameter.
Important: If the client returns an encoded validation token, the validation will fail.
遮阳篷是我自己找的。这里的功能有效:
@app.post("/")
def read_call_record(validationToken):
return Response(content=validationToken, media_type='text/plain')
我尝试为 Microsoft Graph 创建订阅 API。但是,我收到错误
Subscription validation request failed. Response must exactly match validationToken query parameter.
验证请求如下所示:
POST /?validationToken=Validation%3a+Testing+client+application+reachability+for+subscription+Request-Id%3a+c69b04df-f3d3-411c-8ceb-7f1ad8b7a927 HTTP/1.1
使用 FastApi,发送验证请求的 API 看起来像
from fastapi import FastAPI
app = FastAPI()
@app.post("/")
def read_call_record(validationToken):
data = {"validationToken": validationToken}
return data
返回的数据变量如下所示:
{'validationToken': 'Validation: Testing client application reachability for subscription Request-Id: c69b04df-f3d3-411c-8ceb-7f1ad8b7a927'}
有人可以帮忙
您的代码需要 Url 解码 validationToken
查询参数并将其 return 返回到 Graph。
来自 documentation,您的响应必须在 10 秒内发生并具有以下属性:
- A status code of
HTTP 200 OK
.- A content type of
text/plain
.- A body that includes the URL decoded validation token. Simply reflect back the same string that was sent in the
validationToken
query parameter.Important: If the client returns an encoded validation token, the validation will fail.
遮阳篷是我自己找的。这里的功能有效:
@app.post("/")
def read_call_record(validationToken):
return Response(content=validationToken, media_type='text/plain')