2014-09-05 49 views
0

下面這個文檔: https://developers.facebook.com/docs/graph-api/reference/v2.1/user/pictureFB圖形API無法檢索檔案相片

我曾嘗試此代碼來獲取用戶的個人資料圖:

new Request(session, "me/picture", 
       getRequestParameters("type", "large"), HttpMethod.GET, 
       new Request.Callback() { 

        public void onCompleted(Response response) { 
         if (response.getError() == null) { 

          GraphObject graphObject = response.getGraphObject(); 
          Object a = graphObject.getProperty("data"); 
          // .getProperty("url"); 
          saveProfilePicInSP(""); 
         } 
        } 

        private void saveProfilePicInSP(String profileUrl) { 
         sharedPreferencesProvider.putString(
           PublicMacros.SP_FB_PROFILE_PIC, profileUrl); 

        } 
       }).executeAsync(); 

但響應:

{Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"FACEBOOK_NON_JSON_RESULT":"����\u0000\u0010JFIF\u0000\u0001\u0002\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u00006Photoshop"}}, error: null, isFromCache:false} 

我該如何解決這個問題?

模擬在這裏:

https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=me%2Fpicture%3Ftype%3Dlarge&version=v2.1

示出了不同的反應:

{ 
    "data": { 
    "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpa1/v/t1.0-1/s200x200/10491996_10154355617635153_5470840249552886594_n.jpg?oh=4dd714d8106d30cd7e548ad3380c7f24&oe=54924987&__gda__=1415264790_4286480e7bd886198a68824ae4f25bf1", 
    "is_silhouette": false 
    } 
} 
+0

那麼這個響應在開頭就有'JFIF',所以很可能它實際上是一個JPEG圖像......(雖然它應該更長,如果它是一個,但我不知道你是否顯示了什麼我們是完整的迴應?)也許你沒有在這裏正確處理結果... – CBroe 2014-09-06 14:53:06

+0

我該如何正確處理?這裏模擬中: https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=me%2Fpicture%3Ftype%3Dlarge&version=v2.1 示出了不同的反應: – 2014-09-06 15:06:40

+0

當我請求' https://graph.facebook.com/v2.1/me/picture?type = large&redirect = false&access_token = ...'使用有效的用戶訪問令牌,我得到與圖API API資源管理器中完全相同的響應......如果您想要爲了傳遞實際的圖像數據而不是包含圖像信息的JSON結構,那麼你必須刪除'redirect = true' - 然後這個調用將導致HTTP重定向到Facebook CDN上圖像的實際URL。 – CBroe 2014-09-06 15:33:07

回答

0

在圖形API的/…/picture邊緣幾個對象類型提供了兩種不同的結果「格式」:

  • 你可以得到帶有一些關於圖片信息的JSON結構(f.e. is_silhouette,它會告訴你它是用戶上傳的圖像,還是用戶沒有選擇的用於對象類型的Facebook默認圖像,以及帶有其CDN上圖像URL的url)或

  • 你可以得到一個HTTP響應,它發出一個重定向到他們CDN上的圖片位置 - 有用的fe直接在客戶端顯示圖片,或者如果您想從您的應用程序請求並存儲它。

參數redirect允許你明確指定你想要的那兩個。 (「默認」會有所不同基於請求的條件,我認爲,所以最好明確指定它。)


僅供參考,因爲它也是在某些情況下非常有用:還有return_ssl_resources它允許你指定是否希望返回/重定向的URL指向HTTPS或HTTP版本。