Android 获取facebook相册和封面照片

Android 获取facebook相册和封面照片,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,在我的应用程序中,我允许用户从Facebook上传照片。因此,首先,我使用以下工具获取所有用户相册: new Request(session, "/me/albums", null, HttpMethod.GET, new Request.Callback() { public void onCompleted(Response response) { } }; 然后我使用一个适配器来显示GridView中的每个相册,所以在我调用的getView方法中,我不知道如何解析

在我的应用程序中,我允许用户从Facebook上传照片。因此,首先,我使用以下工具获取所有用户相册:

new Request(session, "/me/albums", null, HttpMethod.GET, new Request.Callback() {
            public void onCompleted(Response response) {
}
};
然后我使用一个适配器来显示GridView中的每个相册,所以在我调用的getView方法中,我不知道如何解析响应。要在ImageView中显示图像,我必须对响应对象做什么?有没有更好的办法

我就是这样提出这个要求的

                Bundle params = new Bundle();
                params.putString("type", "thumbnail");
                String albumid = albums.get(position);
                new Request(session, "/"+ albumid +"/picture",
                        params, HttpMethod.GET, 
                        new Request.Callback() {
                    public void onCompleted(Response response) {

                        ViewHolder holder = new ViewHolder();
                    }
                }
                        ).executeAsync();
这就是我得到的:

{响应:响应代码:200,图形对象: GraphObject{GraphObject类=GraphObject, 状态={“FACEBOOK非JSON结果”:����\u0000\u0010JFIF\u0000\u0001\u0002\u0000\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0000��\u0000\u0004*\u0000��\u0002\u001cICC_PROFILE\u0000\u0001\u0001\u0000\u0000\u0002“}, 错误:null,isFromCache:false}


您很可能会返回到图像URL的HTTP重定向(例如,这可以在网站上的
标记中使用)

这记录在以下文件中:

字段
不返回任何字段,您将收到图像文件本身。

您可能需要做的是专门要求提供封面照片,电话如下:


//的详细信息,并从响应中获取大小最合适的源图像

用于获取facebook相册使用此

    Bundle params = new Bundle();
                //params.putString("fields", "photos.limit(10),name,count");
                params.putString("access_token", facebook.getAccessToken());
                params.putString("limit", "1000");
                //me = new JSONObject(facebook.request("me/albums",params ,"GET"));
                System.out.println("params are: "+params);

                if(facebook.getAccessToken()!= null)
                {
                    me = new JSONObject(facebook.request("me/albums",params ,"GET"));
                }

                fbAlbumList.clear();
                try {
                    //JSONObject jsonObject = new JSONObject(respons);
                    JSONArray jsonArray = me.getJSONArray("data");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        FbAlbumBean bean = new FbAlbumBean();
                        bean.albumId = jsonArray.getJSONObject(i).getString("id");
                        bean.albumName = jsonArray.getJSONObject(i).getString("name");
                        if(i!=0)
                        {
                        bean.coverId = jsonArray.getJSONObject(i).getString("cover_photo");
                        bean.albumCount = jsonArray.getJSONObject(i).getInt("count")+"";
                        }
                        fbAlbumList.add(bean);
                    }
Bundle参数=新Bundle();
//参数putString(“字段”、“照片.限制(10)、名称、计数”);
params.putString(“access_token”,facebook.getAccessToken());
参数putString(“限制”、“1000”);
//me=newJSONObject(facebook.request(“me/albums”,params,“GET”);
System.out.println(“参数为:“+params”);
if(facebook.getAccessToken()!=null)
{
me=newJSONObject(facebook.request(“me/albums”,params,“GET”);
}
fbAlbumList.clear();
试一试{
//JSONObject JSONObject=新的JSONObject(响应);
JSONArray JSONArray=me.getJSONArray(“数据”);
for(int i=0;i
以及通过albumId获取照片

public void fetchPhotosFromAlbumId(final String album_id, Activity activity){

    //new FetchAsyncTask().execute(album_id);

    progressDialog1 = ProgressDialog.show(activity,"", "Please wait...");
    System.out.println("progress dialog: "+progressDialog1);

    new Thread(new Runnable() {
        @Override
        public void run() {
            Looper.prepare();

            JSONObject me;
            try {
                fbPhotosList.clear();
                String offset1 = String.valueOf(offset+100);
                Bundle params = new Bundle();
                params.putString("limit", "1000");
                params.putString("access_token", facebook.getAccessToken());

                //me = new JSONObject(facebook.request("me/albums",params ,"GET"));
                me = new JSONObject(facebook.request(album_id+"/photos",params ,"GET"));
                System.out.println(me);

                JSONArray jsonArray = me.getJSONArray("data");
                for (int i = 0; i < jsonArray.length(); i++) {
                    CameraRollBean bean = new CameraRollBean();
                    bean.filePath = jsonArray.getJSONObject(i).getString("source");
                    bean.showRight_IB = false;
                    fbPhotosList.add(bean); 
                }
                System.out.println("size of fb album: "+fbAlbumList.size());
                FbAlbumsScreen.fromFbScreen = true;
                Intent intent = new Intent(_activity, CameraRollScreen.class);
                intent.putExtra("album_id", album_id);
                _activity.startActivity(intent);


                if(progressDialog1!=null)
                    progressDialog1.cancel();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }).start();

    progressDialog1.show();
}
public void fetchPhotosFromAlbumId(最终字符串album\u id,活动){
//新建FetchAsyncTask().execute(相册id);
progressDialog1=ProgressDialog.show(活动“,”请稍候…);
System.out.println(“进度对话框:“+progressDialog1”);
新线程(newrunnable()){
@凌驾
公开募捐{
Looper.prepare();
JSONObject我;
试一试{
fbPhotosList.clear();
字符串偏移量1=String.valueOf(偏移量+100);
Bundle params=新Bundle();
参数putString(“限制”、“1000”);
params.putString(“access_token”,facebook.getAccessToken());
//me=newJSONObject(facebook.request(“me/albums”,params,“GET”);
me=新的JSONObject(facebook.request(相册id+“/photos”,参数,“GET”);
System.out.println(me);
JSONArray JSONArray=me.getJSONArray(“数据”);
for(int i=0;i
但如果我想显示一个包含所有相册名称和封面的网格,我必须对每个相册发出请求,以便从照片对象获取url,然后下载照片?您可以使用/picture获取图像的字节(正如您现在所做的,但您的代码需要字符串)或者批量获取图像URL,并将它们加载到视图中,就像您在示例代码中尝试的那样。很好,但是如何获取位于bean.coverId中的图像?我需要显示每个相册的封面。