Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取O365用户的后台作业获取未经授权的异常_C#_Microsoft Graph Api - Fatal编程技术网

C# 获取O365用户的后台作业获取未经授权的异常

C# 获取O365用户的后台作业获取未经授权的异常,c#,microsoft-graph-api,C#,Microsoft Graph Api,我们正在尝试创建一个微服务模块,其任务是每天使用MicrosoftGraphAPI/users/获取所有用户,并对他们进行处理 我们已遵循此处的指南:并授予Azure应用程序Read.User.All权限: 然后,我们获得了Azure刀片服务器的管理员许可 我们的服务使用Microsoft.Identity.Client库获取令牌: var confidentialClientApplication = new ConfidentialClientApplication(

我们正在尝试创建一个微服务模块,其任务是每天使用MicrosoftGraphAPI/users/获取所有用户,并对他们进行处理

我们已遵循此处的指南:并授予Azure应用程序Read.User.All权限:

然后,我们获得了Azure刀片服务器的管理员许可

我们的服务使用Microsoft.Identity.Client库获取令牌:

var confidentialClientApplication = new ConfidentialClientApplication(
            this.applicationId,
            this.authority,
            this.redirectUri,
            this.credential,
            new TokenCache(),
            new TokenCache());

            var result = await confidentialClientApplication.AcquireTokenForClientAsync(new[] { "https://graph.microsoft.com/.default" });
            return result.AccessToken;
然后,我们创建图形客户端:

new GraphServiceClient(new DelegateAuthenticationProvider(
            async requestMessage =>
            {
                var graphToken = await this.graphAuthProvider.GetAccessTokenAsync();

                // Append the access token to the request
                requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", graphToken);
            }));
下面是我得到的令牌的有效载荷,一些信息被忽略了

{
 "aud": "https://graph.microsoft.com",
 "iss": "https://sts.windows.net/<tenant_id>/",
 "iat": 1527833423,
 "nbf": 1527833423,
 "exp": 1527837323,
 "aio": "Y2dgYKgxbYzssLvLWfve6WbgtsdWAA==",
 "app_displayname": "<app_name>",
 "appid": "<app_id>",
 "appidacr": "1",
 "e_exp": 262800,
 "idp": "https://sts.windows.net/<tenant_id>/",
 "oid": "<subject_id>",
 "sub": "<subject_id>",
 "tid": "<tenant_id>",
 "uti": "-XvIySkmuUOuqmQI0l8CAA",
 "ver": "1.0"
}

然后尝试获取用户时,我收到一个错误,说应用程序没有访问该资源的权限。

发现了问题所在。原来我是在添加委派权限而不是应用程序权限。

您能添加一份您回到问题的令牌副本吗?@Marclafler我用令牌的有效负载编辑了这篇文章,我插入了占位符以获取一些信息