我已授予用户权限User.ReadBasic.All
。在文档中,它指出了这一点
“允许该应用程序代表登录用户读取组织中其他用户的基本配置文件属性集。这包括显示名称,名字和姓氏,电子邮件地址,打开的扩展名和照片。还允许该应用程序阅读已登录用户的完整个人资料。”
如何获得所有具有基本个人资料的用户?
var accessToken = authContext
.AcquireTokenAsync(graphResourceId, new ClientCredential(clientId, secret))
.Result
.AccessToken;
var graphserviceClient = new GraphServiceClient(
new DelegateAuthenticationProvider(requestMessage => {
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
return Task.FromResult(0);
}));
您能否确认我的“ Authority” URL是否正确?
string authority = "https://login.microsoftonline.com/{tenantId}/common/oauth2/v2.0/token?&response_type=code&scope=openid%20profile%20User.Read%20User.ReadWrite%20User.ReadBasic.All";
AuthenticationContext authContext = new AuthenticationContext(authority);
var accessToken = authContext
.AcquireTokenAsync(graphResourceId, new ClientCredential(clientId, secret))
.Result
.AccessToken;
在这里,您实际上是从缓存中获取令牌(使用AcquireTokenSilentAsync
),而当您通过调用赎回了ASP.NET生成的授权代码时,令牌实际上已添加到缓存中AcquireTokenByAuthorizationCodeAsync
。您可以在ADAL.NET概念性文档中找到说明:通过Web Apps中的授权代码获取令牌
请注意,要调用该图,您可能更想使用MSAL.NET。例如,请参见示例的以下分支signInAndCallMicrosoftGraph:aspnetcore-webapp-openidconnect-v2。这表示为教程,首先说明了登录阶段,然后调用了API(在本例中为Microsoft Graph)
最终,您所使用的权限不是Azure AD B2C的权限(正如我在对问题的评论中提到的那样,对于Azure AD,应将其简化为login.microsoftonline.com{tenantId}/common
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句