pro*_*011 2 c# microsoft-graph-sdks microsoft-graph-api
我正在.NET Core
与C#
应用程序一起使用,并且集成了 Azure AD 身份验证。这意味着任何 Azure AD 用户都可以登录此应用程序。现在在某个地方,我想显示当前登录用户的城市、州、国家和其他一些字段值。为此,我使用了Microsoft Graph API,但无法成功获取详细信息。我收到一个错误Request_ResourceNotFound
。我使用下面的C#
代码来获取当前登录用户的数据。
var clientId = "<CLIENT_ID>"; // I have used my application client id here
var secret = "<CLIENT_SECRET>"; // I have used my client secret here
var domain = "<DOMAIN>"; // I have used domain here
var credentials = new ClientCredential(clientId, secret);
var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{domain}/");
var token = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);
var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
{
requestMessage
.Headers
.Authorization = new AuthenticationHeaderValue("bearer", token.AccessToken);
return Task.CompletedTask;
}));
var user = await graphServiceClient
.Me
.Request()
.GetAsync(); // Error at this line
Run Code Online (Sandbox Code Playgroud)
但当我使用时它会抛出以下错误graphServiceClient.Me.Request().GetAsync()
错误:代码:Request_ResourceNotFound
消息:资源“XXXX-XXXX-XXX-XXXX”不存在或其查询的引用属性对象之一不存在。
有没有人之前遇到过这种错误,有人可以建议如何在 C# 中使用 Microsoft Graph 获取当前登录用户的数据吗?
您正在使用客户端凭据,因此不存在“当前登录的用户”。它实际上是客户端凭据的全部要点,无需用户即可对应用程序进行身份验证。
使用客户端凭据时,您需要显式指定用户id
或userPrincipalName
:
var user = await graphServiceClient
.Users["alias@domain.onmicrosoft.com"]
.Request()
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1850 次 |
最近记录: |