C# AADSTS70011:为输入参数提供的值';范围';无效

C# AADSTS70011:为输入参数提供的值';范围';无效,c#,microsoft-graph-api,C#,Microsoft Graph Api,因此,我有一个场景,其中应用程序应该在特定条件下向组中添加用户。此外,当应用程序开始运行时,不应要求用户登录其microsoft id/pwd 因此,我访问使用Graph Service Client对象创建的令牌,如下所示: GraphServiceClient-graphClient=新的GraphServiceClient( "https://graph.microsoft.com/v1.0", 新的DelegateAuthenticationProvider( 异步(请求消息)=> {

因此,我有一个场景,其中应用程序应该在特定条件下向组中添加用户。此外,当应用程序开始运行时,不应要求用户登录其microsoft id/pwd

因此,我访问使用Graph Service Client对象创建的令牌,如下所示:

GraphServiceClient-graphClient=新的GraphServiceClient(
"https://graph.microsoft.com/v1.0", 
新的DelegateAuthenticationProvider(
异步(请求消息)=>
{
字符串clientId=“我的应用程序ID”;
字符串authorityFormat=”https://login.microsoftonline.com/{0}/v2.0”;
字符串tenantId=“租户GUID”;
字符串[]\范围=新字符串[]{
"https://graph.microsoft.com/User.ReadBasic.All" 
};
//应用程序注册中指定的自定义重定向URI
//本机应用程序平台中的门户
字符串重定向URI=”https://localhost:4803/"; 
字符串clientSecret=“App Secret”;
机密客户端应用程序daemonClient=新的机密客户端应用程序(
clientId,
String.Format(authorityFormat,tenantId),
乌里,
新客户端凭据(clientSecret),
null,新的令牌缓存()
);
AuthenticationResult authResult=等待daemonClient.AcquireTokenForClientAsync(_作用域);
字符串令牌=authResult.AccessToken;
requestMessage.Headers.Authorization=新的AuthenticationHeaderValue(“承载者”,令牌);
}
)
);
所以我试着去执行
var user=await-graphClient.Me.Request().GetAsync()

我得到这个错误:

AADSTS70011:为输入参数“范围”提供的值无效。作用域user.read无效

我还尝试将User.ReadBasic
用作作用域,但得到了相同的错误


我在这里做错了什么?

您在这里使用的是客户端凭据流,这意味着您无法动态请求作用域。您必须在apps.dev.microsoft.com中的应用注册中配置所需的权限范围,然后将代码中的范围值设置为
https://graph.microsoft.com/.default


有关更多详细信息,请参阅。

我从另一个为用户而不是组织工作的授权复制了代码。 所以我收到了错误,因为我有错误的授权类型


确保您的是“客户端凭据”

您确定范围应该是
User.ReadBasic.All
而不是
User.Read.All
?确保您使用了我尝试的User.Read.All的正确选项,它给了我以下错误:AADSTS70011:为输入参数“scope”提供的值无效。作用域无效。因为
graph.microsoft.com/User.Read.All
实际上无效。您应该使用
User.Read.All
仅使用“User.Read”进行尝试,但使用的是硬运气。您可以看看grapserviceclient对象是如何形成的代码吗。对象创建有什么问题吗?我觉得一切都很好,但我不是这个领域的专家。如果您使用的是不同的API,请尝试签出,将
之前的所有内容替换为其scheme和GUID:
api://11111111-2222-3333-4444-555555555555/.default
好吧,这很难理解。谢谢你,埃里克。你有这方面的消息来源吗?