Microsoft Web 插件 "Office.context.mailbox.getCallbackTokenAsync" returns 响应 "Failed" 在我的 Exchange 2016 上,但在 office 365 在线工作

Microsoft Web Addins "Office.context.mailbox.getCallbackTokenAsync" returns response "Failed" on my Exchange 2016 but works in office 365 online

我们有 exchange 2016 服务器,我们最近更新到 CU-12,因为我们认为它可能是服务器更新的东西,但现在它似乎也不适用于更新

我只是在传递令牌的帮助下使用 Rest API 来使用 Addin 从当前邮件中获取一些字段。

但是每次调用函数 "Office.context.mailbox.getCallbackTokenAsync" 时都会抛出响应 "failed"。

代码:

 1 Office.context.mailbox.getCallbackTokenAsync({isRest: true, "asyncContext" : this.__archiveComponent}, function(result){
 2 if (result.status === "succeeded") {
 3    let accessToken = result.value;
 4    result.asyncContext.getMultiValueExtendedProperty(accessToken,data[0]);
 5 } else {
 6     var err = result.name;
 7     console.log(err.name + ": " + err.message);
 8   }
 9 });

错误:在浏览器控制台中,JSON 详细响应是:

{"Header":{"ServerVersionInfo":{"MajorVersion":15,
"MinorVersion":1,
"MajorBuildNumber":1713,
"MinorBuildNumber":5,
"Version":"V2017_07_11"
}},

"Body":{"ResponseMessages":{
"Items":[{"__type":"GetClientAccessTokenResponseMessage:#Exchange",
"MessageText":"The token for this extension could not be retrieved.",
"ResponseCode":"ErrorInvalidClientAccessTokenRequest",
"ResponseClass":"Error",
"Token":null}]
}}}

注意:这在 Office 365 在线版中运行良好。我在 OnPrem 服务器上部署了同样的东西 Exchange 2016 CU-12 更新。

如果有人修复了同样的问题,希望能得到一些详细的解释。感觉应该是有一些配置,但是需要指导。

我的一些疑问是

  1. Rest Api 是否仅适用于在线办公室而不适用于 OnPrem 交换服务器?

  2. 或者是否必须进行在线交换才能使用 HYBRID 在 onPrem Exchange 服务器上进行这项工作?

如果是,那么如果我们用 rest API 构建一个插件并且客户没有在线办公室,那么在客户 onPrem 交换服务器上完成这项工作的方法是什么。

更多信息:我也看到类似的问题 Similar question 但我没有看到任何相关的答案或建议可以解决我的上述问题。

根据以上评论,如果您遇到缺少签名证书的问题,可能是因为管理服务器从未创建过新证书。这些步骤可能会解决问题。

1) 使用 New-ExchangeCertificate cmdlet

创建新的 self-signed 证书

2) 使用 Set-AuthConfig cmdlet 修改授权配置以设置指纹并发布在步骤 #1

中创建的证书