我的应用程序使用Outlook Push Notifications REST API为一组用户获取更新。
我用来进行注册的代码如下:
HTTP POST to:
https://outlook.office.com/api/v2.0/users/<user email>/subscriptions
POST data = {
'@odata.type': '#Microsoft.OutlookServices.PushSubscription',
'Resource': 'https://outlook.office.com/api/v2.0/me/messages',
'NotificationURL': 'https://<my_valid_hostname>/api/subscriptions',
'ChangeType': 'Created, Deleted',
'ClientState': <user UUID>,
}
这段代码一直运行良好,但自9月26日以来,它停止了对大多数用户的工作。注册到web通知的HTTP请求返回HTTP 403错误:
HTTP 403 Error: https://outlook.office.com/api/v2.0/users/<user email>/subscriptions
{
"error": {
"code": "ErrorAccessDenied",
"message":"Access is denied. Check credentials and try again."
}
}
此应用程序是在Azure AAD portal中注册的后端应用程序,它使用一个令牌,允许我代表用户执行请求。
我的令牌凭证工作正常。我对Graph API和Outlook API使用相同的标记,没有错误。我刷新了它,看看错误是否消失了,但它不起作用。无论如何,对于新的令牌,都会出现错误。
对于一些用户,我没有得到任何错误,它总是有效的。订阅创建得很好,像往常一样,我得到了返回的JSON格式的订阅数据。
这让我认为这可能是微软方面的问题,但我没有办法检查这一点。
那么,我如何为受影响的用户修复此错误?
发布于 2016-11-30 06:00:13
我首先想到的是,你是不是忘了续订日历了?有点像max。它们还活着14天。在到期之前的任何时候,您都可以续订订阅,在到期之后,您仍然可以恢复订阅。
事实上,现在我用我的应用程序测试了新的订阅,离到期只有7天了。
此时,我发现您在创建新订阅时出现错误。您确定您的access_token仍然有效吗?
发布于 2019-03-04 07:33:38
对于未来的SO用户,
POST https://outlook.office.com/api/v2.0/me/subscriptions
Content-Type: application/json
Authorization: Bearer <access_token>
{
"@odata.type":"#Microsoft.OutlookServices.PushSubscription",
"Resource": "https://outlook.office.com/api/v2.0/<Outlook-Resource>",
"NotificationURL": "<My-Endpoint-Url>",
"ChangeType": "Created,Updated,Deleted"
}
body中的可选ClientState
,允许监听器检查通知的合法性。
https://stackoverflow.com/questions/39749305
复制相似问题