Microsoft graph api 使用Microsoft.Graph库进行仅应用程序的Microsoft Graph身份验证

Microsoft graph api 使用Microsoft.Graph库进行仅应用程序的Microsoft Graph身份验证,microsoft-graph-api,Microsoft Graph Api,我正在使用仅应用程序流成功检索Microsoft Graph API的访问令牌,但生成的令牌似乎无法访问任何内容 以下是我正在使用的身份验证代码: var clientApp=新的机密客户端应用程序( 标识符, 权威 “urn:ietf:wg:oauth:2.0:oob”, 新客户端凭据(机密),空,空); var scopes=新字符串[]{$“{identifier}/.default}; AuthenticationResult authResult=await clientApp.Acq

我正在使用仅应用程序流成功检索Microsoft Graph API的访问令牌,但生成的令牌似乎无法访问任何内容

以下是我正在使用的身份验证代码:

var clientApp=新的机密客户端应用程序(
标识符,
权威
“urn:ietf:wg:oauth:2.0:oob”,
新客户端凭据(机密),空,空);
var scopes=新字符串[]{$“{identifier}/.default};
AuthenticationResult authResult=await clientApp.AcquireTokenForClientSync(作用域);
返回authResult.AccessToken;
因此,我确实得到了一个令牌,但当我尝试使用它时,它会抛出
访问令牌验证失败。
以下是我一直使用的测试查询:

var users=service.users.Request()
.Filter($“邮件等式{resourceIdentifier}'”)
.顶部(1)
.GetAsync();
users.Wait();
对于API
baseUrl
,我提供了:
https://graph.windows.net/{appId}
。我确实向查询字符串添加了
api version=1.6
(手动添加,因为我没有看到通过Microsoft.Graph NuGet库公开的选项)。我之前试过
https://graph.microsoft.com/v2.0
,也无济于事

无论如何,考虑到有关
验证失败的错误消息,
我开始相信我们的(可能是特定于租户的)API URI可能是错误的。是吗?我没有看到什么

更新


该解决方案有两个组成部分。第一个是公认的答复中提到的。第二个是范围应该是,简单地说,
https://graph.microsoft.com/.default
,尽管我的API调用是特定于租户的。

您在这里混淆了两个不同的API

graph.windows.net
URI用于Azure AD graph,它是一个完全不同的API。对于Microsoft Graph,URI应该是
Graph.Microsoft.com


现在也没有微软Graph的
/v2.0
。公开可用的版本是
/v1.0
/beta
。还请注意,使用时不需要提供
baseUrl
,因为它已经默认为
https://graph.microsoft.com/v1.0

谢谢,马克。这些URL在第一次使用默认URL(未指定)后,就有点疯狂了。不过,默认设置会为我抛出相同的错误消息。关于什么可能引发无效令牌错误,还有其他想法吗?我正在使用特定于租户的登录:
https://login.microsoftonline.com/{tenant}/adminconsent
/adminconsent
不用于身份验证,身份验证仅用于提供同意。获得同意后,您需要将应用凭据传递到
/token
端点以接收访问令牌。请注意联机文档。
/adminconsent
后缀是一些博客建议登录的URL,用于范围要求admin的仅应用程序流。不管怎么说,我让它工作了,而且登录似乎在URL中添加或不添加
/adminapprove
都可以工作,所以谁知道呢。现在,我已经按照你的建议删除了它。然而,另一个难题是我的范围应该是
https://graph.microsoft.com/.default
尽管我的查询是特定于租户的。我会用这个更新我的问题。很高兴你让它起作用了。为了澄清,URL应该是
https://login.microsoftonline.com/{公共或租户id}/oauth2/v2.0/token
。很抱歉,我错过了您的示波器中的错误,但您是正确的。范围
https://graph.microsoft.com/.default
告诉系统使用您在
https://apps.dev.microsoft.com
@ChrisD,{tenant}-这是什么?这不是我的应用程序客户端id或我的应用程序名称。我在任何地方都找不到任何文件告诉我它是什么