gpt4 book ai didi

c# - Graph API 拒绝访问,即使我授予了访问权限

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:19 27 4
gpt4 key购买 nike

我遵循了 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);

但是我得到一个错误

{Code: Authorization_RequestDeniedMessage: Insufficient privileges to complete the operation.Inner error}

尽管我设置了这些权限:

enter image description here

为什么这么难?我正在连接到 API 并获取我自己的电子邮件地址,但我无法执行任何其他操作...

当我在 Graph Explorer 中运行 https://graph.microsoft.com/v1.0/users 时,它会很好地返回所有用户...

有人帮忙

最佳答案

如果您指的是 this sample application ,然后我想提一下获取访问 token 它利用ConfidentialClientApplication.AcquireTokenSilentAsync method它接受作为第一个参数为资源请求的范围列表。这些范围(委派的权限)在 web.config 中指定。通过 ida:GraphScopes 键文件。换句话说,无论通过应用程序注册授予什么权限,都将根据通过 ida:GraphScopes 键指定的范围请求访问 token 。

话虽如此,要使此请求有效:

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"/>    

如何验证访问 token

访问 token 的权限可以通过 this 验证或 this服务。解码后,委托(delegate)权限通过 scp 属性表示,例如:

scp: "Files.ReadWrite Mail.Send User.Read"

关于c# - Graph API 拒绝访问,即使我授予了访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49143264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com