gpt4 book ai didi

json - 无法通过 REST API 使用 Microsoft Graph API 更新用户配置文件

转载 作者:行者123 更新时间:2023-12-02 17:24:35 24 4
gpt4 key购买 nike

我试图在未经用户同意的情况下通过服务器端 (Java) 应用程序通过 Microsoft Graph API 更新用户配置文件。我在 MS Azure 中有一个应用程序,它具有以下“对其他应用程序的权限”:“Microsoft Graph - 读取和写入所有用户的完整配置文件”作为“应用程序权限”,管理员同意这些设置。

所以我可以从我们的租户那里获取任何用户配置文件。此外,通过“在所有邮箱中读取和写入日历”权限,我可以列出和修补用户的日历条目。但是,使用相同的代码片段来更新用户配置文件不起作用。

这是工作流的 REST 表示,

获取访问 token :

POST https://login.microsoftonline.com/<my-tenant>/oauth2/token 
Content-Type: application/x-www-form-urlencoded

{
grant_type=client_credentials
&resource=https%3A%2F%2Fgraph.microsoft.com
&client_secret=<my-client-secret>
&client_id=<my-client-id>
}

到目前为止一切顺利,补丁用户配置文件:

PATCH https://graph.microsoft.com/v1.0/<my-tenant>/users/<target-user>
Authorization: Bearer <access_token from prev response>
Accept: application/json
Content-Type: application/json

{"aboutMe": "happy"}

响应是:

response code: 500
{
"error": {
"code": "-1, Microsoft.Office.Server.Directory.DirectoryObjectUnauthorizedAccessException",
"message": "Attempted to perform an unauthorized operation.",
"innerError": {
"request-id": "<request-id>",
"date": "2016-09-27T11:07:18"
}
}
}

根据http://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_update文档 我应该设置“User.ReadWrite; User.ReadWrite.All; Directory.ReadWrite.All”范围,不幸的是在 manage.windowsazure.com 应用程序设置页面上没有这样的东西,但我相信“读取和写入所有用户的完整配置文件”应该可以解决问题。上面的示例请求将一些数据替换为 <> 标签,它们在正常工作流程中显然被正确填充。它非常适合修补日历事件(除了 url 中的微小变化外几乎完全相同)但无法修补用户对象。

最佳答案

Microsoft Graph 目前对用户和组的操作有一些限制,具体取决于权限类型。据本站Known issues ,您会发现存在一个限制:除了更新用户高清照片和扩展配置文件属性外,不能对用户执行任何 CRUD 操作 DelegatedApplication 权限类型。

选择 Directory.ReadWrite.All 权限(Read and write directory data in the new Azure portal ),如 Alternative 列所示Microsoft Graph permissions 中的表格部分,应该可以解决问题。

关于json - 无法通过 REST API 使用 Microsoft Graph API 更新用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com