我試圖在未經用戶許可的情況下通過服務器端(Java)應用程序通過Microsoft Graph API更新用戶配置文件。 我在MS Azure中的應用程序,它具有以下「權限到其他應用程序‘:’微軟圖表 - 讀寫所有用戶的全部資料」爲「應用程序許可」,管理員必須使用這些設置同意。無法通過REST API使用Microsoft Graph API更新用戶配置文件
因此,我可以從我們的租戶獲取任何用戶配置文件。此外,使用「讀取和寫入所有郵箱中的日曆」權限,我可以列出並修補用戶的日曆條目。使用相同的代碼snipets更新用戶配置文件不起作用。
這裏是工作流程的REST表示,
獲得訪問令牌:
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中的輕微更改外),但無法修補用戶對象