facebook4j从我的facebook帖子中检索不同的图像大小

时间:2013-04-15 15:28:18

标签: facebook facebook-java-api

我正在使用facebook4j加载主页帖子facebook.getHome(),我正在获取个人资料图片和帖子图片,如下所示:

facebook4j.User fromUser = facebook.getUser(fbHomePost.getFrom().getId(), 
new Reading().fields("picture"));
if (fromUser.getPicture() != null)                      
  facebookUserPostDto.setProfileImage(fromUser.getPicture().getURL().toURI().toString());
if (fbHomePost.getPicture() != null)
  facebookUserPostDto.setImageLocation(fbHomePost.getPicture().toURI().toString());

一切运行良好,但我从网址获得的图片很小,分辨率很低。任何想法如何使用facebook4j API从Facebook获取“大”图像? facebook可以提供不同的图片尺寸API Reference › Graph API › Pictures

感谢

3 个答案:

答案 0 :(得分:0)

我从未使用过 facebook4j ,但我会告诉你如何使用标准的 facebook sdk 3.0 来实现这一点。

在Facebook新的Feed图表对象中,您有字段“object_id”。当您获得object_id时,您可以检索所有类型的图像资源。

请求

Request r = new Request(session, "/"+ MyJsonData.getData().get(position).getObject_id(), null,HttpMethod.GET, callback2);

RequestAsyncTask task = new RequestAsyncTask(r);
task.execute();

<强>回调

Request.Callback callback2 = new Request.Callback() {
        public void onCompleted(final Response response) {
                    if (response != null) {
        JSONObject graphResponse = null;
                        try {
                            if(response.getGraphObject().getInnerJSONObject()!=null){
    System.out.println("json:" + response);
    graphResponse = response.getGraphObject().getInnerJSONObject();
                }
                        } catch (Exception e) {
                            // TODO: handle exception
                        }
                        try {

            url = graphResponse.getString("source");


                            ImageLoader.getInstance().displayImage(url,myImageView);

        } else {
              System.out.println("NULL");
                    }
                }
    };

我希望它能帮到你

答案 1 :(得分:0)

好的,我从facebook4j google小组得到了关于如何去做这个的回复 retrieve different image size from my facebook posts

Sameeh Harfoush

Brate

答案 2 :(得分:0)

首先,您必须将 user_photos 添加到您的范围,并确保使用有效的访问令牌不是图谱API资源管理器令牌

OAuthService service = new ServiceBuilder()
                                      .provider(FacebookApi.class)
                                      .apiKey(apiKey)
                                      .apiSecret(apiSecret)
                                      .callback("xxxx")
                                      .scope("publish_actions,user_photos ")
                                      .build();

然后试试这个:(测试过)

for(Post p : feed){
        System.out.println("********************");
        String type = p.getType();
        System.out.println("type :"+type);
        String idPicVid = p.getObjectId();
        if(type.matches("photo")){
           System.out.println("idPicVid "+idPicVid);
                try{
                    Photo pic = facebook.getPhoto(idPicVid);
                    System.out.println(pic.toString());
                    System.out.println("source "+pic.getSource());
                    System.out.println("picture "+pic.getPicture());
                }catch (Exception e) {
                    e.printStackTrace();
                }
        }
}