C# 没有用户的Microsoft Graph and access

C# 没有用户的Microsoft Graph and access,c#,azure,azure-active-directory,microsoft-graph-api,microsoft-graph-sdks,C#,Azure,Azure Active Directory,Microsoft Graph Api,Microsoft Graph Sdks,我正在尝试使用ASP.NET核心应用程序中经常运行的后台任务守护程序在sharepoint online中上载和下载文件。因为它是后台任务,所以不使用用户标识。相反,我尝试遵循这一点,使用https://graph.microsoft.com/.default 范围,以及在azure上拥有管理员已授予的特定权限的我的企业应用程序 我可以使用我的应用程序的客户端id和密码获取访问令牌。然而,当我试图请求sharepoint上某个特定站点上的驱动器时,它只是暂停,暗示我无法访问该路径。当我改用我的用

我正在尝试使用ASP.NET核心应用程序中经常运行的后台任务守护程序在sharepoint online中上载和下载文件。因为它是后台任务,所以不使用用户标识。相反,我尝试遵循这一点,使用https://graph.microsoft.com/.default 范围,以及在azure上拥有管理员已授予的特定权限的我的企业应用程序

我可以使用我的应用程序的客户端id和密码获取访问令牌。然而,当我试图请求sharepoint上某个特定站点上的驱动器时,它只是暂停,暗示我无法访问该路径。当我改用我的用户凭证时,我完全可以达到相同的路径

我想我可能错过了一个步骤或与azure管理相关的任务。下面是显示我可以获取访问令牌的代码片段,但在获取驱动器时会暂停

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

编辑:下面是一个更新的屏幕截图,显示添加和同意的应用程序权限:

根据您的图像,您已授予该应用程序的委派权限。您需要授予应用程序权限。委派权限仅在代表用户行事时适用

根据您的图像,您已向该应用授予委派权限。您需要授予应用程序权限。委派权限仅在代表用户行事时适用

错误消息是什么?我添加了一个显示应用程序权限的新屏幕截图,但仍然存在问题。错误消息是:令牌中需要存在scp或角色声明。错误消息是什么?我添加了一个显示应用程序权限的新屏幕截图,但仍然存在问题。错误消息是:令牌中需要存在scp或角色声明。尽管上面的说法是正确的,我需要授予应用权限,但由于某些原因,这对我仍然不起作用。我正在查看我得到的解码令牌,它不包含任何角色。不确定在此执行什么操作。好的,您是否需要权限,然后按“授予权限”按钮?是的,然后它会打开一个浏览器,试图加载我的本地主机应用程序,但我收到错误:处理远程登录时遇到错误。-->System.Exception:关联失败。我是指Azure门户中的“授予权限/授予管理员同意”按钮。是的,有一个按钮,单击该按钮时,会打开一个指向我的本地主机的浏览器窗口,该窗口会抛出错误。尽管上面的说明正确,但我需要授予应用程序权限,由于某种原因,这对我仍然不起作用。我正在查看我得到的解码令牌,它不包含任何角色。不确定在此执行什么操作。好的,您是否需要权限,然后按“授予权限”按钮?是的,然后它会打开一个浏览器,试图加载我的本地主机应用程序,但我收到错误:处理远程登录时遇到错误。-->System.Exception:关联失败。我是指Azure门户中的“授予权限/授予管理员同意”按钮。是的,有一个按钮,单击该按钮时,会打开指向我的本地主机的浏览器窗口,该窗口会引发错误。