2016-03-07 3 views
0

Использование Facebook Graph API, можно запросить список фотографий, загруженных пользователем (/ мне/фотографии /? Тип = закачанный)Как извлечь URL для фото из Facebook Graph API (/ мне/фото)

Однако , это возвращает только список идентификаторов. Я предполагаю, что этот список является идентификатором фотографии, но как я могу использовать этот идентификатор для получения URL-адреса?

ответ

1

Вы должны добавить link поле в запросе - например, попросить /me/photos?fields=link&type=uploaded

+0

это работает! Спасибо – kishidp

0

Пожалуйста, создайте URL как this-

https://graph.facebook.com/USER_FB_ID/picture?type=large 
  • ЗАМЕНЫ USER_FB_ID с фб идентификатором, который вы получаете OnSuccess

EDIT

Рабочий код для получения списка фотографий с исходным URL-адресом.

          System.out.println("Logged in with fb"); 
              Bundle params = new Bundle(); 
              _accesToken = _sPrefsFB.getString("access_token", ""); 
              System.out.println("_accesToken Bundle : " + _accessToken); 

              params.putString("access_token", _accessToken); 


              _imagesList.clear(); 
              mAsyncRunner.request("/me/albums" ,params,"GET", new RequestListener() { 
               @Override 
               public void onComplete(String response, Object state) { 
                //      Log.d("Photos Album ", response); 

                //need to set album adapter 

                if (response!=null&&!response.equalsIgnoreCase("")) { 
                 //       System.out.println("Response of fb album : " +response); 
                 try { 
                  JSONObject _jObjectMain = new JSONObject(response); 
                  JSONArray _jArrayMain = _jObjectMain.getJSONArray("data"); 
                  System.out.println("Size of Album list fb : " + _jArrayMain.length()); 

                  if (_jArrayMain.length()>0) { 
                   _albumListFB.clear(); 
                   for (int i = 0; i < _jArrayMain.length(); i++) { 
                    JSONObject _jObjectSub = _jArrayMain.getJSONObject(i); 
                    FaceBookAlbumBean _bean = new FaceBookAlbumBean(); 
                    if (_jObjectSub.has("id")) { 
                     String _albumID = _jObjectSub.getString("id"); 
                     _bean.set_albumID(_albumID); 
                    } 
                    if (_jObjectSub.has("name")) { 
                     String _albumName = _jObjectSub.getString("name"); 
                     _bean.set_albumName(_albumName); 
                    } 

                    _albumListFB.add(_bean); 

                   } 

                   //need to call fb images ws 

                   Bundle params = new Bundle(); 
                   _accesToken = _sPrefsFB.getString("access_token", ""); 
                   System.out.println("_accesToken Bundle : " + _accessToken); 
                   params.putString("access_token", _accessToken); 
                   for (int i = 0; i < _albumListFB.size(); i++) { 
                    String _albumID = _albumListFB.get(i).get_albumID(); 

                    mAsyncRunner.request("/"+_albumID+"/photos" ,params,"GET", new RequestListener() { 
                     @Override 
                     public void onComplete(String response, Object state) { 
                      Log.d("PHotos from album", response); 
                      if (response!=null&&!response.equalsIgnoreCase("")) { 
                       try { 
                        JSONObject _jObjectMain = new JSONObject(response); 
                        if (_jObjectMain.has("data")) { 
                         JSONArray _jArrayMain = _jObjectMain.getJSONArray("data"); 
                         if (_jArrayMain.length()>0) { 

                          for (int i = 0; i < _jArrayMain.length(); i++) { 
                           JSONObject _jObjectSub = _jArrayMain.getJSONObject(i); 
                           CameraRollBean _bean = new CameraRollBean(); 
                           if (_jObjectSub.has("images")) { 
                            JSONArray _jArraySub = _jObjectSub.getJSONArray("images"); 
                            if (_jArraySub.length()>0) { 
                             System.out 
                             .println("Image Array length : " + _jArraySub.length()) ; 
                             JSONObject _jObjectSub1 = _jArraySub.getJSONObject(_jArraySub.length()-1); 
                             if (_jObjectSub1.has("source")) { 

                              String _source = _jObjectSub1.getString("source"); 
                              /*System.out 
                               .println("Source Image : " +_source);*/ 
                              _bean.setFilePath(_source); 
                             } 
                            } 
                           } 
                           _imagesList.add(_bean); 
                          } 
                         } 




                        } 
                       } catch (JSONException e) { 
                        // TODO Auto-generated catch block 
                        e.printStackTrace(); 
                       } 
                      } 
                      System.out.println("_imagesList Size : " +_imagesList.size()); 

                     } 

                     @Override 
                     public void onIOException(IOException e, Object state) { 
                     } 

                     @Override 
                     public void onFileNotFoundException(FileNotFoundException e, 
                       Object state) { 
                     } 

                     @Override 
                     public void onMalformedURLException(MalformedURLException e, 
                       Object state) { 
                     } 

                     @Override 
                     public void onFacebookError(FacebookError e, Object state) { 
                     } 
                    },null); 
                   } 





                  } 
                 } catch (JSONException e) { 
                  // TODO Auto-generated catch block 
                  e.printStackTrace(); 
                 } 
                } 



               } 

               @Override 
               public void onIOException(IOException e, Object state) { 
               } 

               @Override 
               public void onFileNotFoundException(FileNotFoundException e, 
                 Object state) { 
               } 

               @Override 
               public void onMalformedURLException(MalformedURLException e, 
                 Object state) { 
               } 

               @Override 
               public void onFacebookError(FacebookError e, Object state) { 
               } 
              },null); 
              //   } 
+0

Я считаю, что это только для изображения профиля? Я пытаюсь загрузить все фотографии, загруженные пользователем./me/photos возвращает список идентификаторов для этих фотографий, но я не знаю, как их получить, поскольку он не возвращает URL-адрес – kishidp

+0

Для этого вам необходимо предоставить приложение для просмотра Facebook. –

Смежные вопросы