Android 获取facebook相册和封面照片
在我的应用程序中,我允许用户从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方法中,我不知道如何解析
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中的图像?我需要显示每个相册的封面。