c# - Microsoft Graph 和无用户访问
问题描述
我正在尝试使用在我的 ASP.NET Core 应用程序中经常运行的后台任务(守护程序)在线上传和下载我的共享点中的文件。因为它是后台任务,所以不使用用户身份。相反,我尝试遵循此文档,使用范围获取访问令牌https://graph.microsoft.com/.default
,并让我的企业应用程序在 azure 上具有管理员已授予的特定权限。
我可以使用我的应用程序的客户端 ID 和密码获取访问令牌。但是,当我尝试在 sharepoint 上的特定站点上请求驱动器时,它只是停止,提示我它无法到达路径。当我使用我的用户凭据时,我可以完全达到同样的路径。
我想我可能错过了一个步骤或一些与管理相关的天蓝色任务。下面是显示我可以获取访问令牌的代码片段,但在获取驱动器时会停止。
var client = new ConfidentialClientApplication(id, uri, cred, null, new SessionTokenCache());
var authResult = await client.AcquireTokenForClientAsync(new[] {"https://graph.microsoft.com/.default"});
var token = authResult.AccessToken; // get token successfully
var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider(async request => {request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token)}));
// stalls below
var drives = await graphServiceClient.Sites[<sharepoint_host>].SiteWithPath(<known_path>).Drives.Request().GetAsync();
在 ASP.NET Core 2 应用程序中使用 Microsoft Graph SDK。
解决方案
根据您的图像,您已授予该应用程序的委派权限。您需要授予应用程序权限。委派权限仅在代表用户行事时适用。
推荐阅读
- javascript - 使用 JSZip 生成图像 zip 时返回空 zip
- python - 将2个数组函数应用于numpy中的数组
- javascript - 我应该将反应钩子作为值传递给上下文提供者吗?
- java - 使用 2D 点查找段的长度时出现 NullPointerException
- python - Python,执行失败(检测到致命错误)
- c++ - 我将如何遍历我的数组(缓冲区——包含一个文本文件),并以 30 个字节的块打印出来?
- html - 重定向回具有验证错误的特定 div 部分
- javascript - 选择多个按钮
- php - 如何在 Woocommerce 中按属性和供应商地址进行搜索
- php - Laravel 在集合序列化中保留组键