为MSGraph创建订阅API获取400错误请求错误[错误代码 - ExtensionError]

时间:2017-02-17 17:45:32

标签: notifications office365 webhooks subscription microsoft-graph

尝试创建订阅以获取用于文件创建/上载的msgraph一个驱动器通知的通道。 我正在点击网址 -

https://graph.microsoft.com/v1.0/subscriptions  

使用正确的标题和以下正文 -

{ 
    "changeType": "updated",
    "notificationUrl": "https://xxxxx.xxxxxxxxx.com/zzzz/qwertqwert",
    "resource": "/users/{user-id}/drive/root",
    "expirationDateTime": "2017-02-18T19:49:40.000Z",
    "clientState": "justsomerandomstring"

}

我收到以下回复: 400错误请求错误

{
  "error": {
    "code": "ExtensionError",
    "message": "Operation: Create; Exception: [Status Code: BadRequest; Reason: Bad Request]",
    "innerError": {
      "request-id": "2862896286-5415-4921-gbn5-8741288985",
      "date": "2017-02-17T17:30:22"
    }
  }
}

我在30-32小时后回复了同样的请求。在我的重定向servlet上获取了subscription-id以及文件通知。 无法弄清楚改变了什么。无法找到任何帮助文档

2 个答案:

答案 0 :(得分:1)

在这里得到了同样的错误,我花了一段时间才发现问题是什么,所以我在这里与你分享。

这是工作代码:

$subscription = new Subscription([
  'resource'        => "me/mailFolders('Inbox')/messages?filter=id eq %27" . $draftEmail->getId() . '%27', 
  'notificationUrl' => 'https://my.domain.fr',
  'changeType'      => 'updated',
  'expirationDateTime' => date(DATE_ISO8601, strtotime('+48 hours'))
]);

对我来说错误的路线是:

'resource' => 'me/messages/' . $draftEmail->getParentFolderId(),

我用

替换它
'resource' => "me/mailFolders('Inbox')/messages?filter=id eq %27" . $draftEmail->getId() . '%27', 

我在此链接中找到了答案:https://msdn.microsoft.com/en-us/office/office365/api/notify-rest-operations#subscribe-to-changes-in-my-mail-calendar-contacts-or-tasks

但在我看来,"资源"参数应该在graph api文档中更多地记录,并且错误消息返回必须指定为什么这是BadRequest。

答案 1 :(得分:0)

使用beta api版本解决了我的问题,

import UIKit

class thanks: UITextField {

override init(frame: CGRect) {
    super.init(frame: frame)
    self.translatesAutoresizingMaskIntoConstraints = false

    self.textAlignment = .center
    self.layer.borderWidth = 1.25

    self.addTarget(self, action: #selector(handlePress), for: .touchUpInside)
}

@objc public func handlePress(){
    print("Got Message")

}
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}