2016-09-27 78 views
0

我試圖在未經用戶許可的情況下通過服務器端(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中的輕微更改外),但無法修補用戶對象

回答

0

我也可以重現這個問題

根據測試,問題是相對於具體的領域(aboutMe)我們正在更新。當我使用Directory.ReadWrite.All更新jobTitle時,補丁用戶API適用於我。

如果您希望Microsoft Graph支持更新aboutMe字段,您可以提交here的反饋。

1

Microsoft Graph對用戶和組的操作目前有一些限制,具體取決於權限類型。根據網站Known issues您可以發現有一個限制:Cannot perform any CRUD operations on User other than updating user HD photo and extended profile propertiesDelegatedApplication權限類型。

選擇Directory.ReadWrite.All許可(Read and write directory datanew Azure portal),如在表AlternativeMicrosoft Graph permissions部分所指出的,應該解決的問題。

相關問題