首页 > 解决方案 > 从 Web API 调用 Microsoft 图形时出现无效令牌错误

问题描述

我需要做的是从 C# Web API 调用 Microsoft graph。这基本上是我的方法的样子:

var clientCredential = new ClientCredential(clientId, clientSecret);
AuthenticationContext context = new AuthenticationContext(authority);
AuthenticationResult authenticationResult = context.AcquireToken(clientId, clientCredential);
if (authenticationResult == null)
{
    throw new InvalidOperationException("Failed to obtain the token");
}
return authenticationResult;

我通过这个电话收到的是:

在此处输入图像描述


然后我的想法是调用 microsoft graph 传递这个令牌(我什至不能 100% 确定这是实现隐式流的正确方法)......但之后我收到“无效令牌”错误。

谁能告诉我我在这里做错了什么?十分感谢!

标签: c#azureoauth-2.0sharepoint-online

解决方案


您的问题是您获取令牌的方式。

这应该是:

context.AcquireToken("https://graph.microsoft.com", clientCredential);

第一个参数是您想要令牌的 API 的资源 URI。

此外,这不是隐式流程,它是客户端凭据流程,应用程序使用应用程序权限访问 API 作为其自身。


推荐阅读