我遵循了ASP.NET Quick Start guide并让项目有效。
API成功检索我的电子邮件地址就好了。
现在我想获得一个用户列表并检索他们的一些属性。
在GraphService
:
public async Task GetUsers(GraphServiceClient graphClient)
{
var users = await graphClient.Users.Request().Select("mail").GetAsync();
}
我打电话(复制方法以检索用户电子邮件):
var graphClient = SDKHelper.GetAuthenticatedClient();
await graphService.GetUsers(graphClient);
但是我收到了错误
{代码:Authorization_RequestDeniedMessage:没有足够的权限来完成操作。内部错误}
即使我设置了这些privelages:
为什么这么难?我正在连接到API并获取我自己的电子邮件地址,但我无法做任何其他事情......
当我在图形浏览器中运行https://graph.microsoft.com/v1.0/users
时,它会返回所有用户......
请有人帮忙
答案 0 :(得分:1)
如果您指的是this sample application,那么我想提及获取访问令牌它利用ConfidentialClientApplication.AcquireTokenSilentAsync
method作为第一个参数接受范围列表请求资源。这些范围(委派权限)在web.config
文件中通过ida:GraphScopes
密钥指定。换句话说,无论通过应用程序注册授予了什么权限,都将通过ida:GraphScopes
密钥指定的每个范围请求访问令牌。
话虽如此,为了使这个要求有效:
public async Task<IGraphServiceUsersCollectionPage> GetUsers(GraphServiceClient graphClient)
{
return await graphClient.Users.Request().Select("mail").GetAsync();
}
您可以在web.config中明确更新委派的权限:
<add key="ida:GraphScopes" value="User.Read User.ReadBasic.All"/>
如何验证访问令牌
可以通过this或this服务验证访问令牌的权限。解码后,委派的权限通过scp
属性表示,例如:
scp: "Files.ReadWrite Mail.Send User.Read"