我正在使用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
感谢
答案 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
答案 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();
}
}
}