2017-08-07 77 views
4

我在啓動Microsoft Graph webhook訂閱(特別是郵箱)時遇到問題。在啓動訂閱時,似乎Microsoft接受我發送的所有參數來配置訂閱,但由於它從我配置的端點接收到非2xx響應,因此訂閱失敗。Microsoft Graph Webhook丟失ClientState

我的終端向0123發送401的原因是因爲他們的包含訂閱驗證令牌的POST缺少clientState。

我正在使用clientState鍵值對對Microsoft和我的端點之間的所有通信進行身份驗證。如果我的端點沒有看到正確的clientState,它將返回401

關於我可能會丟失什麼或者我應該以不同的方式去解決這個問題的想法?在我看來,允許我的端點接受未經身份驗證的GET/POST不是一種選擇。

使用POST方法,包括頭中的API密鑰示例請求體:從微軟

{ 
    "changeType": "created", 
    "clientState": "testClientState", 
    "resource": "users/<UserName>/messages", 
    "expirationDateTime": "2017-08-10T10:24:57.0000000Z", 
    "notificationUrl": "<EndpointURL>" 
} 

返回錯誤:

"error": { 
    "code": "InvalidRequest", 
    "message": "Subscription validation request failed. Must respond with 200 OK to this request.", 
    "innerError": { 
     "request-id": "adf7fc7b-6b14-4422-8526-c1391be8dd27", 
     "date": "2017-08-07T16:24:59" 
    } 
} 

我明白了一切工作按計劃,直到我的端點發送驗證令牌,因爲我收到驗證令牌,但我的端點因爲缺少客戶端狀態而拒絕它。

端點日誌摘錄:

queryStringParameters": { 
    "validationToken": "<ValidationToken sent by Microsoft>" 
} 

我立足我的API端點邏輯關閉一些微軟的開發者指南。特別是訂閱創作,我是using this guide

看來這個問題是also asked but not answered on GitHub

回答

1

我代表微軟網頁圖形鉤團隊...

我們在MS圖表服務日誌驗證您的請求,並確認其是失敗的認購驗證階段,因爲HTTP狀態代碼=從您的端點「未授權」 ...直到這一切都是正確的,根據你的觀察...

通過設計,MS Graph Web鉤子不會發送clientState頭作爲訂閱驗證請求的一部分。在訂閱驗證期間,請不要期望這個頭文件。

更多信息

  1. 你沒有料想到會收到clientState作爲驗證請求頭的一部分,因爲Office365圖將其發送https://msdn.microsoft.com/en-us/office/office365/api/notify-rest-operations。與MS Graph不同的Office 365圖形...
  2. 在此問題上觀察到一些文檔改進,在https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/subscription_post_subscriptions ...示例發佈者通知有效載荷(成功訂閱後)與訂閱驗證一起提及...我們修復了這些問題。
+0

請確認:我的回覆是否回答了您的問題? –