我正在尝试使用我的客户端密钥和客户端ID获取我的天蓝色租户中的组。问题是我不知道在获取访问令牌以使用图形API时要通过的范围。我使用https://graph.microsoft.com/.default来获取访问令牌,但这不包括提取组的权限。什么是适当的使用范围
https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0#permissions
权限
调用此API需要以下权限之一。要了解更多信息,包括如何选择权限,请参阅权限。
权限类型权限(从最少到最高权限)
委托(工作或学校帐户)Group.Read.All,Group.ReadWrite.All
Application Group.Read.All,Group.ReadWrite.All
您需要在AAD中配置API访问,而不是在范围内配置。确保您不要忘记单击“授予权限”。
示例假定您需要应用程序权限。委托权限的工作方式类似。
使用MSAL进行身份验证获取数据的示例代码:
IConfidentialClientApplication app = new ConfidentialClientApplication(
"clientId",
"https://login.microsoftonline.com/yourtenant.onmicrosoft.com",
"http://localhost (redirecturi)",
new ClientCredential("secret"),
new TokenCache(), new TokenCache());
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
try
{
AuthenticationResult result = await app.AcquireTokenForClientAsync(scopes);
System.Console.WriteLine(result.AccessToken);
using (var http = new HttpClient())
{
http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken);
var groupResponse = await http.GetAsync("https://graph.microsoft.com/v1.0/groups");
var groupJson = await groupResponse.Content.ReadAsStringAsync();
System.Console.WriteLine(groupJson);
}
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}