我严格按照this article构建一个Outlook WEB加载项,但是当我执行getAccessToken时,我收到302:
缺少此加载项的授权。
名字:
预授权缺失
这是为什么?我的加载项已在portal中注册。我还需要做其他事吗?此请求的授权类型是什么?我应该在哪里放入?
$("#getAccessTokenBtn").click(function () {
Office.context.auth.getAccessTokenAsync(function (result) {
if ("succeeded" === result.status) {
// Use this token to call Web API
var ssoToken = result.value;
} else {
if (13003 === result.error.code) {
// SSO is not supported for domain user accounts, only
// work or school (Office 365) or Microsoft Account IDs.
} else {
// Handle error
}
}
});
});
这是我的表现:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
...
</Host>
</Hosts>
<Resources>
...
</Resources>
<WebApplicationInfo>
<Id>94x668mb-461c-4r4e-851n-fb9721222e31</Id>
<Resource>api://localhost:44374/94x668mb-461c-4r4e-851n-fb9721222e31</Resource>
<Scopes>
<Scope>profile</Scope>
<Scope>user.read</Scope>
</Scopes>
</WebApplicationInfo>
</VersionOverrides>
我发现troubleshooting page建议错误13005以下:
13005无效拨款。这通常意味着Office尚未预先授权加载项的Web服务。有关更多信息,请参阅Create the service application和Register the add-in with Azure AD v2.0 endpoint(ASP.NET)或Register the add-in with Azure AD v2.0 endpoint(Node JS)。如果用户未向其个人资料授予您的服务应用程序权限,也可能发生这种情况。
那有什么意思?
在我要求访问令牌之前,我是否应该同意关注this documentation,只需导航到下面的URL?
https://login.microsoftonline.com/common/adminconsent?client_id=94x668mb-461c-4r4e-851n-fb9721222e31
是。在开发时,您必须按照here所述授予管理员同意。
您收到该错误的另一种可能性是您没有预先授权Outlook加载。当您使用AAD 2.0注册加载项时,请确保您已完成本文的第10步:Register SSO add-in with AAD 2.0。最后,如果您还没有,请查看本文以了解适用于Outlook插件的任何特殊因素:Authenticate (Outlook) user with an SSO token