访问Outlook Mail REST API返回错误的问题的问题



我们有一个Outlook加载项,我们需要使用它的itemID来更新邮件项目的单值扩展 - 范围。

用于更新扩展属性的文档:此处

我们得到了HTTP调用的以下响应:

请求URL:

PATCH https://outlook.office365.com/api/v2.0/me/messages('{mailItemId}')

响应:

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "The api you are trying to access does not support item scoped OAuth."
    }
}

进一步调整时,我们发现我们在请求标题中使用的auth令牌可能存在问题。我们正在使用Outlook的getCallbackTokenAsync API获取令牌,并且isRest选项设置为true用于REST令牌。在堆栈跨流中搜索相关问题时,我发现了这些问题:

  1. 无法使用Outlook REST API
  2. 在Outlook加载项中添加附件
  3. 从Outlook Web加载项访问Outlook Restapi

这些表明此API中可能存在错误,因此它返回了一个示波器令牌而不是邮箱示波的项目。项目范围的有效载荷包含Exchange.Callback.V1作为版本的值,而Exchange.Callback.V2的邮箱示波了。

我们在https://jwt.io/上解码了我们的响应令牌,发现返回的令牌确实是一个项目范围的项目,因此,我们被阻止了将扩展范围的更新值推向邮件项目。还写道,此问题可能在16.0.0.7902.1000之后的构建中得到解决。我正在在Web-Browser客户端上尝试使用此操作以获取Outlook,但不确定在我的情况下,构建版本如何相关。

最近有没有其他人面对这种行为,还是有可能解决这个问题?

************** 编辑 ****************

我在评论中遵循了建议,现在可以执行Postman的补丁请求,但不在加载项内部。我在控制台中遇到了400个不良请求错误。以下是响应的版本,并删除了特定的密钥名称和URL。

{ 
  "_body": { 
    "error":{ 
      "code":"RequestBodyRead", 
      "message":"An unexpected instance annotation name '{key name}' was found 
                 when reading from the JSON reader, In OData, Instance 
                 annotation name must start with @."
    } 
  }, 
  "status": 400, 
  "ok": false, 
  "statusText": "Bad Request", 
  "type": 2 
} 

如何解决这个问题?

请看一下getCallbackTokenAsync api doc:learn.microsoft.com/en-us/office/dev/add/add-ins/reference/4。您需要在其清单中指定ReadWriteMailbox的权限。

最新更新