Azure active directory 在C中删除Microsoft Graph API中的组#

Azure active directory 在C中删除Microsoft Graph API中的组#,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,当我试图在C#中从API中删除组时,我得到一个授权401错误代码,但如果我在postman中尝试,则成功。感觉有点奇怪,因为我运行相同的命令,但它不工作 我想我的问题是,要删除Office 365中的组,我需要登录到我的帐户,而应用程序无法执行此操作 我为应用程序授予了allGroup.ReadWrite.all访问权限和所有其他权限。所以我想我需要传递Azure AD的登录凭据,否则我就错了 Request : StatusCode: 401, ReasonPhrase: 'U

当我试图在C#中从API中删除组时,我得到一个授权
401
错误代码,但如果我在postman中尝试,则成功。感觉有点奇怪,因为我运行相同的命令,但它不工作

我想我的问题是,要删除Office 365中的组,我需要登录到我的帐户,而应用程序无法执行此操作

我为应用程序授予了all
Group.ReadWrite.all
访问权限和所有其他权限。所以我想我需要传递Azure AD的登录凭据,否则我就错了

Request : 
   StatusCode: 401, 
   ReasonPhrase: 'Unauthorized', 
   Version: 1.1, 
   Content: System.Net.Http.NoWriteNoSeekStreamContent, 
   Headers:
编辑

我试图不使用我的
GetAccessToken()
,而是使用在Postman中使用OAUTH 2.0验证时获得的令牌。如果我使用了这个不记名令牌,我运行脚本并使用DELETE就不会有问题

所以我的问题是,在C#代码中使用ADAL与Postman Auth2.0的调用有什么区别。当使用Postman时,我会得到一个登录页面,在那里我可以登录到我的Azure帐户,我可以在代码中复制它吗?对于C#中的身份验证,我使用

新编辑

有人在聊天中写道,我检查了访问令牌以及我在网站上的角色

roles: [
  "EduRoster.Read.All",
  "Mail.ReadWrite",
  "User.ReadWrite.All",
  "Calendars.Read",
  "People.Read.All",
  "Group.Read.All",
  "Directory.ReadWrite.All",
  "MailboxSettings.Read",
  "Contacts.ReadWrite",
  "Group.ReadWrite.All",
  "Notes.Read.All",
  "Directory.Read.All",
  "User.Read.All",
  "Mail.Read",
  "Calendars.ReadWrite",
  "Mail.Send",
  "MailboxSettings.ReadWrite",
  "Contacts.Read",
  "Member.Read.Hidden",
  "Notes.ReadWrite.All"]

你在正确的轨道上

该方法支持委托(
授权代码
隐式
OAUTH授权)和应用程序(
客户端凭据
OAUTH授权)模型。委托流和应用程序流都需要
组.ReadWrite.All
范围

出现
401 Unauthorized
错误的原因是您的应用程序尚未收到您所连接的租户的信息。使用
客户端凭据时
没有用户进行身份验证,因此在应用程序与租户交互之前,管理员必须首先明确授权您的应用程序和您请求的作用域


你可以在那里找到一个步行通道

一些澄清:如果您有一个令牌,但它没有进行您正在尝试的API调用所需的声明/权限,那么您应该获得403禁止。如果该令牌在API请求中丢失或格式不正确,您将获得401未经授权的证书。请看

您是在对Graph进行直接HTTP REST调用,还是在使用客户端库?我建议您查看我们的一些示例,以了解令牌获取的示例以及对Microsoft Graph的调用。Try(使用.Net客户端库)或(使用直接HTTP REST调用)

您是在(已登录)用户的上下文中获取令牌,还是在应用程序的上下文中获取令牌(未登录用户)?如果是前者,则需要请求“委托”权限。如果是后者,则需要请求“应用程序”权限。请看这些概念:和


希望这能有所帮助,

错误的详细信息是什么。你能提供代码来帮助重现错误吗?添加了更多信息,但没有人遇到过这个问题?你好,马克,很高兴看到你很活跃,帮助了像我这样的人!对我来说,解决这个问题的一个办法是将/beta改为/v1.0。你知道为什么会这样吗?显然,
/beta
端点可能有问题。您应该只使用
/beta
进行新功能的POC测试。它不是受支持的终结点。只有
/v1.0
支持生产使用。+1表示Marc在使用v1.0时所说的。然而,这仍然很奇怪。对于组删除,/beta和/v1.0应该是等效的。我会让工程团队快速查看一下。你好,Dan,对于github回购协议,我查看了它们,获得了内容,以及您在哪里进行了身份验证。但是身份验证似乎比使用机密id和对象id时要高级得多。我觉得我没有完全完成代码示例中的工作。问题是,我不明白为什么会出现禁止的错误,因为我给了我的应用程序对委托和应用程序的所有权限。我在这个问题上有点纠结……你是否同意该应用程序,或者在Azure门户中单击“授予权限”?您能否获取通过代码获得的访问令牌,并使用查看令牌中的声明?你看到什么“scp”或“角色”声明了吗?我将角色添加到我的问题库中。那么你的代码是在做
client\u凭证
flow还是
code
flow?我想我在做client\u凭证。使用密钥和clientID。