2016-01-07 65 views
0

我必須得到用戶相冊和整個圖像。到目前爲止我做了什麼。Facebook用戶相冊圖像分頁使用最新的Facebook SDK?

第1步:獲取用戶的相冊詳情

步驟2:使用相冊ID獲取相冊內的圖像

Bundle parameters = new Bundle(); 
     parameters.putString("fields", "images"); 
     parameters.putString("limit", count); 
     /* make the API call */ 
     new GraphRequest(
       AccessToken.getCurrentAccessToken(), 
       "/" + albumId + "/photos", 
       parameters, 
       HttpMethod.GET, 
       new GraphRequest.Callback() { 
        public void onCompleted(GraphResponse response) { 
       } 

     }).executeAsync(); 

你可以看到我指定parameters.putString("limit", count); 時請求專輯圖像和count是專輯中可用的圖像。一旦超過100響應沒有返回所有的數據。我知道像分頁這樣的東西需要做些什麼。我可以做基於偏移的分頁來檢索相冊中的所有可用圖像嗎?誰能幫我嗎。

+0

https://developers.facebook.com/docs/graph-api/using-graph-api/#paging //用於支持分頁返回鏈接終點前進每個API響應/在迴應中落後;儘管我不確定是否可以將該URL直接傳遞給'GraphRequest',或者必須手動傳遞參數。 – CBroe

回答

0

有三種類型的分頁用於在Facebook中獲取用戶照片,即基於光標的分頁,基於時間的分頁和基於偏移的分頁。在您的情況下,您可以按照您在query.for中詢問的基於偏移的分頁您可能需要在圖請求中包含offsetlimit的屬性。因此,您可以通過初始化零開始offset,然後通過limit作爲100。這意味着您將從0100獲得記錄。 並注意,您可以根據請求獲取100記錄。更清楚地說,我正在編寫一個用於提取相冊圖像URL的代碼示例。

// ArrayList for storing images URL 
private ArrayList<String> albumImages= new ArrayList<>(); 
// Records offset value, initially zero 
private int offset = 0; 
// Records count would like to fetch per request 
private int limit = 100; 

private void getAlbumsImages(final String albumId, final int count, int offsetValue, int limitValue) { 
     offset = offsetValue; 
     limit = limitValue; 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "images"); 
     parameters.putString("offset", String.valueOf(offset)); 
     parameters.putString("limit", String.valueOf(limit)); 

     /* make the API call */ 
     new GraphRequest(
       AccessToken.getCurrentAccessToken(), 
       "/" + albumId + "/photos", 
       parameters, 
       HttpMethod.GET, 
       new GraphRequest.Callback() { 
        public void onCompleted(GraphResponse response) { 
         /* handle the result */ 
         try { 
          if (response.getError() == null) { 
           JSONObject joMain = response.getJSONObject(); 
           if (joMain.has("data")) { 
            JSONArray jaData = joMain.optJSONArray("data"); 
            for (int i = 0; i < jaData.length(); i++)//Get no. of images 
            { 
             JSONObject joAlbum = jaData.getJSONObject(i); 
             JSONArray jaImages = joAlbum.getJSONArray("images");// get images Array in JSONArray format 
           if (jaImages.length() > 0) { 
          albumImages.add(jaImages.getJSONObject(0).getString("source")); 
             } 
            } 
           } 

           if (count > offset + limit) { 
            offset = offset + limit; 
            if (count - offset >= 100) 
             limit = 100; 
            else 
             limit = count - offset; 
            getFacebookImages(albumId, count, offset, limit); 
           } 
          } else { 
           Log.e("Error :", response.getError().toString()); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       } 
     ).executeAsync(); 
    } 

你必須做一個遞歸調用函數從專輯中你RecyclerView滾動正常獲取整張圖像或改變功能。

使用

getFacebookImages(mAlbumsId, mAlbumsImagecount, offset, limit); 
相關問題