需要在读取场景中更改消息属性(主题等)
Need change message properties (subject etc.) in read scenario
有一个看起来很奇怪的问题,但我已经根据项目要求为 outlook web 应用程序(内容应用程序)实现了以下阅读模式功能 - 更新正在查看的项目(消息或约会)的主题。
尝试的方法:
1) getCallbackTokenAsync - 在服务器端出现错误,没有足够的权限从 EWS 更新项目。
2) getUserIdentityTokenAsync - 在服务器端出现错误,没有足够的权限在服务器端调用 ConvertId,以及“当尝试在客户端或 server-side 调用 UdateItem 时,客户端出现旧项目 ID 格式错误。
3) 通过 OAuth 2 访问代码流获取用户同意和令牌 - 失败(在 IE 中导航由于 iframe 沙箱而被阻止,并且 window.open 被 MS 为该应用程序 iframe 加载)(在 Chrome 导航是允许的,理论上它可以工作,但是像 /api/items/{exchange item id} 这样的 url 是错误 404.11 的结果(从沙箱 iframe 发送时检测到双重转义)。
4) 在 server-side 使用 grant_type=client_credentials [使用客户端 ID 和客户端密码] 获取访问令牌有效,但结果令牌被视为 "low security"(保护1 级,而 2 级是必要的)。已知表单错误 401 Unauthorized with x-ms-diagnostics header 在尝试更新项目时被返回。
PS:提醒一下我尝试在 READ 视图下更新项目,而不是在 edit/compose 模式下。
感谢帮助!
PS:Application-wide 使用 ADAL 进行证书身份验证调用,因为我使它看起来像这样:
public async Task<JObject> PrepareApplicationAuthenticationToken()
{
var authContext = new AuthenticationContext(
GetAuthorityUrl()
.ToString()
);
var result = await authContext.AcquireTokenAsync(
GetResourceUrl(),
new ClientAssertionCertificate(GetClientId(), AppCertificateHelper.GetCertificate())
);
var token = JSON.LoadFromString(result.Serialize());
token["access_token"] = result.AccessToken;
token["refresh_token"] = result.RefreshToken;
return token;
}
客户端凭据流要求您使用证书而不是客户端 ID/secret 组合。只要将自签名证书上传到您的应用程序注册清单,就可以使用它。有关详细信息,请参阅 http://blogs.msdn.com/b/exchangedev/archive/2015/01/21/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx。
有一个看起来很奇怪的问题,但我已经根据项目要求为 outlook web 应用程序(内容应用程序)实现了以下阅读模式功能 - 更新正在查看的项目(消息或约会)的主题。 尝试的方法:
1) getCallbackTokenAsync - 在服务器端出现错误,没有足够的权限从 EWS 更新项目。
2) getUserIdentityTokenAsync - 在服务器端出现错误,没有足够的权限在服务器端调用 ConvertId,以及“当尝试在客户端或 server-side 调用 UdateItem 时,客户端出现旧项目 ID 格式错误。
3) 通过 OAuth 2 访问代码流获取用户同意和令牌 - 失败(在 IE 中导航由于 iframe 沙箱而被阻止,并且 window.open 被 MS 为该应用程序 iframe 加载)(在 Chrome 导航是允许的,理论上它可以工作,但是像 /api/items/{exchange item id} 这样的 url 是错误 404.11 的结果(从沙箱 iframe 发送时检测到双重转义)。
4) 在 server-side 使用 grant_type=client_credentials [使用客户端 ID 和客户端密码] 获取访问令牌有效,但结果令牌被视为 "low security"(保护1 级,而 2 级是必要的)。已知表单错误 401 Unauthorized with x-ms-diagnostics header 在尝试更新项目时被返回。
PS:提醒一下我尝试在 READ 视图下更新项目,而不是在 edit/compose 模式下。
感谢帮助!
PS:Application-wide 使用 ADAL 进行证书身份验证调用,因为我使它看起来像这样:
public async Task<JObject> PrepareApplicationAuthenticationToken()
{
var authContext = new AuthenticationContext(
GetAuthorityUrl()
.ToString()
);
var result = await authContext.AcquireTokenAsync(
GetResourceUrl(),
new ClientAssertionCertificate(GetClientId(), AppCertificateHelper.GetCertificate())
);
var token = JSON.LoadFromString(result.Serialize());
token["access_token"] = result.AccessToken;
token["refresh_token"] = result.RefreshToken;
return token;
}
客户端凭据流要求您使用证书而不是客户端 ID/secret 组合。只要将自签名证书上传到您的应用程序注册清单,就可以使用它。有关详细信息,请参阅 http://blogs.msdn.com/b/exchangedev/archive/2015/01/21/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx。