2015-02-09 90 views
1

我正在對微軟的Live API下面的請求的JSON響應用戶的個人資料圖片:充分利用微軟的Live API,而不是重定向

GET https://apis.live.net/v5.0/me/picture?access_token=ACCESS_TOKEN 

結果,不同於其他任何請求發送到API,是重定向到物理圖像位置,這會導致返回實際圖像對象,而不是包含該圖像路徑的典型JSON響應。

我可以挖掘響應對象並嘗試獲取Content-Location頭或其他東西來獲取我正在尋找的URL,但這感覺非常脆弱,並且與我處理其他API響應的方式不同。

我也知道基於這種行爲的API URL本身可以作爲圖像URL,但是1)我使用的是在後臺構建該URL的客戶端,以及2)我不想像訪問個人資料圖片列一樣堅持訪問令牌。

Interactive Live SDK實際上顯示了一個JSON對象作爲換取一個REST請求:

{ 
    "location": "https://cid-0000000000000000.users.storage.live.com/users/0x0000000000000000/myprofile/expressionprofile/profilephoto:UserTileStatic" 
} 

就是那種反應我要的,而且由於互動SDK可以表現出來,我們有了一些辦法請求返回JSON。我試着在查詢字符串中設置redirect=false(對於Facebook來說是必要的,它做了類似的事情)並將Accept請求標頭設置爲application/json。沒有任何影響。

回答

1

這不是我的問題的真正答案,所以我仍然對我原始問題的任何迴應感興趣。但是,我找到了一個解決方法。

URL https://apis.live.net/v5.0/{user_id}/picture將返回適當的照片照片,而不需要訪問令牌。因此,所有你需要的是構建此網址的用戶的ID,並可以通過以下方式獲得:

GET apis.live.net/v5.0/me?access_token=ACCESS_TOKEN 

將返回到一個類似於:

{ 
    "id": "0000000000000000", 
    "name": "John Doe", 
    "first_name": "John", 
    "last_name": "Doe", 
    "gender": null, 
    "locale": "en_US" 
} 

id成員有,是什麼你需要的網址。這並不理想,因爲我必須分兩步來做,並希望微軟不會改變特定用戶的個人資料圖片的檢索方式,或者突然開始需要訪問令牌。不過,我認爲,總比沒有好。