首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >图形API -创建用户时的ResourceNotFound

图形API -创建用户时的ResourceNotFound
EN

Stack Overflow用户
提问于 2022-01-05 09:22:30
回答 2查看 222关注 0票数 0

我已经尝试了几天了,我已经重复检查了所有的例子,并试图搜索我的错误反应,但我无法想出任何东西。

我已经成功地将图形api调用添加到我的应用程序中,当我在/users端点上执行GET时,它会很好地返回我的AD用户,下面的代码就是我尝试创建用户的代码,但是每次我得到ResourceNotFound响应时都会这样做。

值得注意的是,起初我收到了一条错误消息,它没有说明它找不到的资源,但现在错误消息显示“资源”User_不存在.

GUID每次都会发生变化,这意味着它正在创建该对象,然后尝试使用它做一些事情,但是在某个API上失败了。

创建用户功能-

代码语言:javascript
代码运行次数:0
运行
复制
Public Function CreateUser(user As User) As String
            Dim app As IConfidentialClientApplication = MsalAppBuilder.BuildConfidentialClientApplication(ClaimsPrincipal.Current)
    
            Dim accountId = ClaimsPrincipal.Current.GetMsalAccountId()            
            Dim account = app.GetAccountAsync(accountId).Result           
    
            Dim result As AuthenticationResult
            Dim scopes As String() = {"https://graph.microsoft.com/.default"}
    
            Try
                result = app.AcquireTokenSilent(scopes, account).ExecuteAsync().Result
    
            Catch msalEx As MsalUiRequiredException
                Return msalEx.Message
            Catch ex As Exception
                result = app.AcquireTokenForClient(scopes).ExecuteAsync().Result
            End Try
    
    
            Dim client = New HttpClient()
            Dim request As New HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/users")
            request.Headers.Authorization = New AuthenticationHeaderValue("Bearer", result.AccessToken)
    
            Dim json = JsonConvert.SerializeObject(user)
            request.Content = New StringContent(json, Encoding.UTF8, "application/json")
    
            Dim response = client.SendAsync(request).Result
    
            If response.Content IsNot Nothing Then
                Dim responseString = response.Content.ReadAsStringAsync().Result
                Return responseString
            End If
            Return ""
        End Function

我还注意到,这个应用程序从来不包含任何用户,所以范围只标记总是被调用的。

EN

回答 2

Stack Overflow用户

发布于 2022-01-06 11:03:11

试几样东西-

  1. 建议使用相同的令牌和JSON内容,并查看是否可以利用邮递员并调用相同的API来验证您的JSON(请求体)、URL和令牌。
  2. 使用jwt.ms并检查您的令牌是否具有所有必要的声明。
  3. 确保您已经为App.

提供了所需的权限。

如果您仍然面临同样的问题,请使用客户端请求id和时间戳进行恢复,这样我就可以更好地检查它。

谢谢。

票数 0
EN

Stack Overflow用户

发布于 2022-01-06 12:06:12

在这里发布之后,我还请求microsoft支持小组提供帮助。

他们建议我使用图形资源管理器再试一次,所以在做了这两件事之后,我在失眠症中重新发送了我的请求,实际上,当我使用图形资源管理器,仍然使用来自失眠和代码的BadRequest时,我得到了一个成功的响应。

这些请求之间的区别是请求主体。

我最初构建的是使用这里的图文档中提供的代码示例(示例1) - https://learn.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=http

为了节省你的时间,这看起来就像-

代码语言:javascript
代码运行次数:0
运行
复制
POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "accountEnabled": true,
  "displayName": "Adele Vance",
  "mailNickname": "AdeleV",
  "userPrincipalName": "AdeleV@contoso.onmicrosoft.com",
  "passwordProfile" : {
    "forceChangePasswordNextSignIn": true,
    "password": "xWwvJ]6NMw+bWH-d"
  }
}

这就是请求体在图形浏览器中的样子-

代码语言:javascript
代码运行次数:0
运行
复制
{
        "accountEnabled": true,
        "city": "Seattle",
        "country": "United States",
        "department": "Sales & Marketing",
        "displayName": "Melissa Darrow",
        "givenName": "Melissa",
        "jobTitle": "Marketing Director",
        "mailNickname": "MelissaD",
        "passwordPolicies": "DisablePasswordExpiration",
        "passwordProfile": {
            "password": "b85dba0d-be1b-a59a-8332-6821b138674d",
            "forceChangePasswordNextSignIn": false
        },
        "officeLocation": "131/1105",
        "postalCode": "98052",
        "preferredLanguage": "en-US",
        "state": "WA",
        "streetAddress": "9256 Towne Center Dr., Suite 400",
        "surname": "Darrow",
        "mobilePhone": "+1 206 555 0110",
        "usageLocation": "US",
        "userPrincipalName": "MelissaD@{domain}"
}

在更改代码模型以匹配第二个请求体之后,我现在在代码中获得了成功的响应,并测试了我将旧请求体留在失眠症中的理论,并使用一个新的令牌对请求表示不满,它返回BadRequest,而代码返回成功。

我不能百分之百确定丢失的属性是什么,也许只是密码策略。如果微软给我更多的洞察力,我会在这里更新。

希望这能为其他人提供一些洞察力,因为我自己确实很难找到这方面的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70590440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档