Azure AD 中的范围与应用程序中的范围不同 (Microsoft Graph Api)

scopes in azure AD different from scopes in application (Microsoft Graph Api)

我正在尝试使用 Microsoft Graph api、

访问 OneDrive 中的文件

在我的 Azure AD 中,我授予了以下权限:

在我的应用程序中,我有以下代码:

然而,当我 运行 应用程序时,它给我以下错误:

Error getting access token: AADSTS70011: The provided value for the input parameter 'scope' is not valid. One or more scopes in 'https://graph.microsoft.com/.default offline_access profile openid' are not compatible with each other. 即使我没有在其他任何地方授予 offline_access profile openid 权限。

即使我将 _scopes 更改为 private string[] _scopes = new string[4]{"User.Read","Files.ReadWriteAll.All","Files.Read","Files.ReadWrite.AppFolder"} 我仍然会得到相同的错误,但 "https://graph.microsoft.com/.default" 将被上述值替换。

根据您提供的信息,您使用的范围不对。应该是 private string[] _scopes = new string[4]{"User.Read","Files.ReadWrite.All","Files.Read","Files.ReadWrite.AppFolder"}.

例如

  1. 注册 Azure AD 应用程序

  2. 启用设备代码流

  3. 代码


            var client = PublicClientApplicationBuilder
                .Create("")
                .WithAuthority( AadAuthorityAudience.AzureAdMyOrg)
                .WithTenantId("consumers")
                .Build();

            var scopes = new string[] { "User.Read", "Files.ReadWrite.All" , "Files.ReadWrite.AppFolder", "Files.Read" };
           await  client.AcquireTokenWithDeviceCode(scopes, deviceCodeResult =>
            {
                Console.WriteLine(deviceCodeResult.Message);
                return Task.FromResult(0);

            }).ExecuteAsync();