Come get gli album di foto utente di Facebook utilizzando il grafico api?

Come faccio a recuperare tutti gli album degli utenti di Facebook. ho provato così con questo Url https://graph.facebook.com/me/albums?access_token=xxxx

Sto usando questo codice, mi sono state citate anche queste autorizzazioni anche "user_photos" .

  • Qualcuno può spiegare il metodo di servizio setForeground?
  • HttpResponse.getEntity () NetworkOnMainThreadException
  • html5 video su Android 4: riprodurre fullscreen quindi redirect ad un'altra pagina web - non funziona
  • come utilizzare runOnUiThread
  • I dispositivi Adb non riescono a trovare il mio telefono
  • La differenza tra Handler.dispatchMessage (msg) e Handler.sendMessage (msg)
  •  Bundle parameters = new Bundle(); parameters.putString("format", "json"); parameters.putString("method", "user_photos"); parameters.putString(TOKEN, facebook.getAccessToken()); JSONObject response = null; try { response = Util.parseJson(Album_Url); JSONArray arrays = obj.optJSONArray("data"); for(int i = 0; i<arrays.length(); i++){ JSONObject main_obj = arrays.getJSONObject(i); String album = main_obj.getString("name"); } } catch (JSONException e1) { e1.printStackTrace(); } catch (FacebookError e1) { e1.printStackTrace(); } 

    ma io sto ottenendo questo nel gatto di registro 09-12 14:27:42.990: W/System.err(12189): org.json.JSONException: Value https of type java.lang.String cannot be converted to JSONObject .

    ho provato come questo anche

     try { Bundle parameters = new Bundle(); parameters.putString("format", "json"); parameters.putString(TOKEN, facebook.getAccessToken()) ; String response = null; try { response = Util.openUrl(Album_Url, "GET", parameters); } catch (MalformsdURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } JSONObject obj = Util.parseJson(response); JSONArray arrays = obj.optJSONArray("data"); for(int i = 0; i<arrays.length(); i++){ JSONObject main_obj = arrays.getJSONObject(i); String album = main_obj.getString("name"); } } catch (JSONException e1) { e1.printStackTrace(); } catch (FacebookError e1) { e1.printStackTrace(); } 

    09-12 14:42:36.920: W/System.err(12259): com.facebook.android.FacebookError: Malformsd access token ricevendo questo errore 09-12 14:42:36.920: W/System.err(12259): com.facebook.android.FacebookError: Malformsd access token

  • Costruire Android da fonti: reloc non supportto 43
  • HTML: perché il browser Android mostra "Vai" invece di "Avanti" in tastiera?
  • Android Firebase - "onDataChange" e "onCancelled" non chiamato senza connessione a Internet
  • Utilizzando startActivityForResult, come get il requestCode nell'attività del bambino?
  • Come iniziare con l'SDK di WeChat Android
  • Utilizzando intenti per passare i dati tra le attività in android
  • One Solution collect form web for “Come get gli album di foto utente di Facebook utilizzando il grafico api?”

    Nel metodo onCreate() , chiamo questa Asynctask :

     private class getAlbumsData extends AsyncTask<Void, Void, Void> { LinearLayout linlaHeaderProgress = (LinearLayout) findViewById(R.id.linlaHeaderProgress); @Override protected void onPreExecute() { // SHOW THE PROGRESS BAR (SPINNER) WHILE LOADING ALBUMS linlaHeaderProgress.setVisibility(View.VISIBLE); } @Override protected Void doInBackground(Void... params) { // CHANGE THE LOADING MORE STATUS TO PREVENT DUPLICATE CALLS FOR // MORE DATA WHILE LOADING A BATCH loadingMore = true; // SET THE INITIAL URL TO GET THE FIRST LOT OF ALBUMS URL = "https://graph.facebook.com/" + initialUserID + "/albums&access_token=" + Utility.mFacebook.getAccessToken() + "?limit=10"; try { HttpClient hc = new DefaultHttpClient(); HttpGet get = new HttpGet(URL); HttpResponse rp = hc.execute(get); if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String queryAlbums = EntityUtils.toString(rp.getEntity()); JSONObject JOTemp = new JSONObject(queryAlbums); JSONArray JAAlbums = JOTemp.getJSONArray("data"); if (JAAlbums.length() == 0) { stopLoadingData = true; Runnable run = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "No more Albums", Toast.LENGTH_SHORT) .show(); } }; Albums.this.runOnUiThread(run); } else { // PAGING JSONOBJECT if (JOTemp.has("paging")) { JSONObject JOPaging = JOTemp.getJSONObject("paging"); if (JOPaging.has("next")) { String initialpagingURL = JOPaging .getString("next"); String[] parts = initialpagingURL.split("limit=10"); String getLimit = parts[1]; pagingURL = "https://graph.facebook.com/" + initialUserID + "/albums&access_token=" + Utility.mFacebook.getAccessToken() + "?limit=10" + getLimit; } else { stopLoadingData = true; Runnable run = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "No more Albums", Toast.LENGTH_SHORT).show(); } }; Albums.this.runOnUiThread(run); } } else { stopLoadingData = true; Runnable run = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "No more Albums", Toast.LENGTH_SHORT).show(); } }; Albums.this.runOnUiThread(run); } getAlbums albums; for (int i = 0; i < JAAlbums.length(); i++) { JSONObject JOAlbums = JAAlbums.getJSONObject(i); if (JOAlbums.has("link")) { albums = new getAlbums(); // GET THE ALBUM ID if (JOAlbums.has("id")) { albums.setAlbumID(JOAlbums.getString("id")); } else { albums.setAlbumID(null); } // GET THE ALBUM NAME if (JOAlbums.has("name")) { albums.setAlbumName(JOAlbums .getString("name")); } else { albums.setAlbumName(null); } // GET THE ALBUM COVER PHOTO if (JOAlbums.has("cover_photo")) { albums.setAlbumCover("https://graph.facebook.com/" + JOAlbums.getString("cover_photo") + "/picture?type=normal" + "&access_token=" + Utility.mFacebook .getAccessToken()); } else { albums.setAlbumCover("https://graph.facebook.com/" + JOAlbums.getString("id") + "/picture?type=album" + "&access_token=" + Utility.mFacebook .getAccessToken()); } // GET THE ALBUM'S PHOTO COUNT if (JOAlbums.has("count")) { albums.setAlbumPhotoCount(JOAlbums .getString("count")); } else { albums.setAlbumPhotoCount("0"); } arrAlbums.add(albums); } } } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { // SET THE ADAPTER TO THE LISTVIEW lv.setAdapter(adapter); // CHANGE THE LOADING MORE STATUS loadingMore = false; // HIDE THE PROGRESS BAR (SPINNER) AFTER LOADING ALBUMS linlaHeaderProgress.setVisibility(View.GONE); } } 

    Per completezza, ecco quello che utilizzo per recuperare l'URL di pagine per un elenco senza fine:

     private class loadMoreAlbums extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { // SHOW THE BOTTOM PROGRESS BAR (SPINNER) WHILE LOADING MORE ALBUMS linlaProgressBar.setVisibility(View.VISIBLE); } @Override protected Void doInBackground(Void... params) { // SET LOADING MORE "TRUE" loadingMore = true; // INCREMENT CURRENT PAGE current_page += 1; // Next page request URL = pagingURL; // Log.e("NEW URL", URL); try { HttpClient hc = new DefaultHttpClient(); HttpGet get = new HttpGet(URL); HttpResponse rp = hc.execute(get); if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String queryAlbums = EntityUtils.toString(rp.getEntity()); // Log.e("RESULT", queryAlbums); JSONObject JOTemp = new JSONObject(queryAlbums); JSONArray JAAlbums = JOTemp.getJSONArray("data"); if (JAAlbums.length() == 0) { stopLoadingData = true; Runnable run = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "No more Albums", Toast.LENGTH_SHORT) .show(); } }; Albums.this.runOnUiThread(run); } else { // PAGING JSONOBJECT JSONObject JOPaging = JOTemp.getJSONObject("paging"); // Log.e("PAGING", JOPaging.toString()); if (JOPaging.has("next")) { String initialpagingURL = JOPaging .getString("next"); // Log.e("initialpagingURL", initialpagingURL); String[] parts = initialpagingURL.split("limit=10"); String getLimit = parts[1]; pagingURL = "https://graph.facebook.com/" + initialUserID + "/albums&access_token=" + Utility.mFacebook.getAccessToken() + "?limit=10" + getLimit; // Log.e("NEW PAGING URL", pagingURL); } else { stopLoadingData = true; Runnable run = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "No more Albums available", Toast.LENGTH_SHORT).show(); } }; Albums.this.runOnUiThread(run); } getAlbums albums; for (int i = 0; i < JAAlbums.length(); i++) { JSONObject JOAlbums = JAAlbums.getJSONObject(i); // Log.e("INDIVIDUAL ALBUMS", JOAlbums.toString()); if (JOAlbums.has("link")) { albums = new getAlbums(); // GET THE ALBUM ID if (JOAlbums.has("id")) { albums.setAlbumID(JOAlbums.getString("id")); } else { albums.setAlbumID(null); } // GET THE ALBUM NAME if (JOAlbums.has("name")) { albums.setAlbumName(JOAlbums .getString("name")); } else { albums.setAlbumName(null); } // GET THE ALBUM COVER PHOTO if (JOAlbums.has("cover_photo")) { albums.setAlbumCover("https://graph.facebook.com/" + JOAlbums.getString("cover_photo") + "/picture?type=album" + "&access_token=" + Utility.mFacebook .getAccessToken()); } else { albums.setAlbumCover("https://graph.facebook.com/" + JOAlbums.getString("id") + "/picture?type=album" + "&access_token=" + Utility.mFacebook .getAccessToken()); } // GET THE ALBUM'S PHOTO COUNT if (JOAlbums.has("count")) { albums.setAlbumPhotoCount(JOAlbums .getString("count")); } else { albums.setAlbumPhotoCount("0"); } arrAlbums.add(albums); } } } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { // get listview current position - used to maintain scroll position int currentPosition = lv.getFirstVisiblePosition(); // APPEND NEW DATA TO THE ARRAYLIST AND SET THE ADAPTER TO THE // LISTVIEW adapter = new AlbumsAdapter(Albums.this, arrAlbums); lv.setAdapter(adapter); // Setting new scroll position lv.setSelectionFromTop(currentPosition + 1, 0); // SET LOADINGMORE "FALSE" AFTER ADDING NEW FEEDS TO THE EXISTING // LIST loadingMore = false; // HIDE THE BOTTOM PROGRESS BAR (SPINNER) AFTER LOADING MORE ALBUMS linlaProgressBar.setVisibility(View.GONE); } } 

    L' loadMoreAlbums Asynctask viene eseguito da onScrollListener in onCreate() :

      lv.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int lastInScreen = firstVisibleItem + visibleItemCount; if ((lastInScreen == totalItemCount) && !(loadingMore)) { if (stopLoadingData == false) { // FETCH THE NEXT BATCH OF FEEDS new loadMoreAlbums().execute(); } } } }); 

    Puoi scegliere le parti pertinenti dal mio codice, oppure puoi utilizzarla nel suo complesso (dopo aver compilato alcuni spazi, ovviamente). Spero che un po 'di questo aiuti.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.