如何授予客户端应用程序对 Microsoft Azure 中请求范围的访问权限

How to grant the client application access to the requested scope in microsoft azure

我遇到了这个错误

com.microsoft.aad.msal4j.MsalInteractionRequiredException:AADSTS70000:请求被拒绝,因为请求的一个或多个范围未经授权或已过期。用户必须先登录并授予客户端应用程序访问请求范围的权限。

跟踪 ID:add5eedb-86d5-41bc-bad3-129298e3ca00
关联 ID:1d2ab508-8ec6-49d7-abaa-d1b8feaedda8

I register app in Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox) azure account

Api权限:

委派:

申请:

我在 Azure 门户中提供了所需的权限和范围(公开 Api),但我仍然收到此错误。我试图解决这个错误超过几天我不明白我做错了什么?

用户登录时没有询问日历的权限。

如何解决这个错误?

提前致谢。

已解决

I have solved this problem by adding Calendars.ReadWrite scope in AuthorizationRequestUrlParameters

我通过在 AuthorizationRequestUrlParameters

中添加 Calendars.ReadWrite 范围解决了这个问题

进入下面的字符串 updatedScopes 我已经传递了 null,所以它被认为是微软的默认范围,而不是询问日历权限。

String updatedScopes = scope == null ? "Calendars.ReadWrite" : scope;
        
PublicClientApplication pca = PublicClientApplication.builder(clientId).authority(authority).build();
AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters
.builder(redirectURL,Collections.singleton(updatedScopes))
.responseMode(ResponseMode.QUERY)
.prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce)
.claimsChallenge(claims).build();