2017-03-16 98 views
2

公司我工作的需求,開發出將出口Office 365的聯繫人,並將其導入到我們的用戶配置文件的聯繫人的API。這是作爲某種守護進程運行的。微軟圖形API - 用戶響應JSON無法完成

我發現微軟的圖形API,並一直在努力爲天,讓它運行,但戴隱形眼鏡的功能似乎並沒有爲我工作。

我正在使用資源graph.microsoft.com並嘗試使用PHP cURL與 /users/{id}/contacts聯繫。

stdClass Object 
(
    [error] => stdClass Object 
     (
      [code] => ResourceNotFound 
      [message] => Resource could not be discovered. 
      [innerError] => stdClass Object 
       (
        [request-id] => 134b1964-9421-4fce-84ba-aca1525c705e 
        [date] => 2017-03-20T15:35:39 
       ) 

     ) 

) 

我得到一個訪問令牌就好了(我的應用程序目前要求所有的讀/寫權限,以避免被卡住,因爲缺少特權,他們已經被管理員帳戶同意)。

我發現了,之所以這可能是因爲用戶的響應JSON作爲它應該不完全格式化是。 Microsoft's Documentation顯示了用戶資源的完整表示。我似乎錯過了與其他資源的所有關係,比如我需要的「聯繫人」。下面是使用/users/{id}的JSON我從圖形API獲得:

stdClass Object 
(
    [@odata.context] => https://graph.microsoft.com/beta/$metadata#users(contacts)/$entity 
    [id] => e4007399-90fb-489d-a0f8-2c577f219638 
    [accountEnabled] => 1 
    [assignedLicenses] => Array 
     (
     ) 

    [assignedPlans] => Array 
     (
     ) 

    [businessPhones] => Array 
     (
     ) 

    [city] => 
    [companyName] => 
    [country] => 
    [department] => 
    [displayName] => Loic Didelot 
    [givenName] => Loic 
    [jobTitle] => 
    [mail] => 
    [mailNickname] => vendors_mixvoip.com#EXT# 
    [mobilePhone] => 
    [onPremisesDomainName] => 
    [onPremisesImmutableId] => 
    [onPremisesLastSyncDateTime] => 
    [onPremisesSecurityIdentifier] => 
    [onPremisesSamAccountName] => 
    [onPremisesSyncEnabled] => 
    [onPremisesUserPrincipalName] => 
    [passwordPolicies] => 
    [passwordProfile] => 
    [officeLocation] => 
    [postalCode] => 
    [preferredLanguage] => 
    [provisionedPlans] => Array 
     (
     ) 

    [proxyAddresses] => Array 
     (
     ) 

    [refreshTokensValidFromDateTime] => 2017-03-14T09:13:10Z 
    [showInAddressList] => 
    [imAddresses] => Array 
     (
     ) 

    [state] => 
    [streetAddress] => 
    [surname] => Didelot 
    [usageLocation] => 
    [userPrincipalName] => vendors_mixvoip.com#EXT#@vendorsmixvoip.onmicrosoft.com 
    [userType] => Member 
) 

我一直沒能找到如何解決這個問題,當我試圖尋找這個問題,我得到的結果,可以「自定義屬性」通過使用/users/{id}?$select=customPropertyName來選擇。這不適用於/users/{id}?$select=contacts

在此先感謝您的幫助。

回答

0

微軟圖表的探險家是你的朋友(簡單的方法來嘗試REST的API請求來):https://developer.microsoft.com/en-us/graph/graph-explorer

此外,如果你看看我們的文檔概述的頭版,也有一些例子查詢(儘管接觸的他們沒有一個人)是我給你的一些想法:https://developer.microsoft.com/en-us/graph/docs

反正 - 你需要撥打電話是個人聯繫人

GET https://graph.microsoft.com/v1.0/users/{id}/contacts 

這將返回用戶/ {ID}的集合/集合。資源類型(用於集合)是contact而不是user

有關接觸資源類型,並列表中的聯繫人詳細信息,請參閱以下主題: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/contact https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list_contacts

希望這有助於

+0

我已經試過圖探險家,但它不會讓我與登錄用戶我已經註冊了該應用程序。您可能沒有閱讀我的整篇文章,我**是使用'GET https://graph.microsoft.com/v1.0/users/{id}/contacts'來獲取聯繫人,但它沒有工作,我收到錯誤'資源無法描述'。搜索這個錯誤並沒有幫助,它讓我認爲返回的用戶JSON並不完整,因爲它與記錄的用戶JSON不一樣。 – Fred

+0

您是否註冊使用Microsoft帳戶?如果是這樣,是的,我們遇到了一些問題,因此禁用了該功能。你能否用一個完整的錯誤信息(包括request-id和timestamp)來更新你的問題?這對所有用戶都會失敗嗎?您嘗試獲取個人聯繫人的用戶是否有可能沒有Exchange Online許可證/郵箱? –

+0

我沒有使用Microsoft帳戶註冊該應用程序。這是必須的嗎?在那種情況下,爲什麼我能夠在沒有它的情況下完成所有步驟? (我在20日更新了錯誤回覆的帖子) – Fred