【发布时间】:2021-03-02 09:10:21
【问题描述】:
我的应用程序使用 MSAL v2.0 在 angular 8 中。 该应用程序要求用户提供 Office 365 凭据,将其登录,然后允许他们在日历中创建事件。 用户已成功登录,获取了令牌,但尝试使用 MS Graph Rest API 在日历中创建事件时,系统会抛出 401 Unauthorized 错误。
下面的登录函数在用户登录时返回登录成功消息。accessToken 值为空,但 idToken 有值。 accessToken 应该有值吗?另外,是因为 loginPopup 命令中需要范围而出现 401 错误吗?:
loginPopup(request) {
return super.loginPopup(request)
.then((authResponse) =>
this.broadcastService.broadcast("msal:loginSuccess", authResponse);
return authResponse;
})
.catch((error) => {
this.broadcastService.broadcast("msal:loginFailure", error);
this.getLogger().error("Error during login:\n" + error.errorMessage);
throw error;
});
}
错误信息是: zone-evergreen.js:1042 "POST https://graph.microsoft.com/v1.0/me/events 401 (未授权)"
单击此错误消息中的链接https://graph.microsoft.com/v1.0/me/events 显示: https://login.microsoftonline.com//oauth2/v2.0/authorize?response_type=id_token&scope=openid%20profile&client_id=&redirect_uri=https%3A%2F%2FmyApp.abc.com%2F&state=%3D&nonce=ad9d4ce5-7676-5515-a36c-7b2b3c70d366&client_info=1& -client-SKU=MSAL.JS&x-client-Ver=1.4.2&login_hint=sales1%40abc.com&client-request-id=&response_mode=fragment&sso_reload=true
【问题讨论】:
-
能否分享失败请求的requestid、时间戳和整个错误响应?
-
您需要访问令牌才能调用 Microsoft Graph。使用msal.js的方法请看:docs.microsoft.com/en-us/azure/active-directory/develop/….
-
如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢你:)
标签: angular microsoft-graph-api unauthorized