Outlook推送通知REST API在订阅注册中失败

问题描述 投票:0回答:2

我的应用程序使用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中的订阅数据。

这让我觉得它可能是微软方面的问题,但我无法检查这一点。

那么如何为受影响的用户修复此错误?

outlook office365api outlook-restapi
2个回答
0
投票

我想到的第一件事是您忘记续订日历订阅了吗?这就像最大的。 14天他们还活着。在到期之前的任何时候,您都可以续订订阅,之后您仍然可以恢复订阅。

事实上现在我用我的应用程序测试了新的订阅,我只有7天到期日。

此时我得知您在创建新订阅时遇到错误..您确定您的access_token仍然有效吗?


0
投票

对于未来的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"
}

体内可选的ClientState,允许听众检查通知的合法性。

Check out the docs for more info.

© www.soinside.com 2019 - 2024. All rights reserved.