use*_*951 20 facebook-graph-api
从一个页面加载Facebook Feed时,如果Feed中存在图片,我想显示大图片.
我怎么能得到graph API?Feed中的图片链接不是大图片链接.
谢谢.
CBr*_*roe 44
所述图形API照片对象具有picture连接(类似于用户对象具有):
"专辑大小的照片视图.[...]返回:HTTP 302重定向到图片的网址."
因此,请求https://graph.facebook.com/{object-id-from-feed}/picture会立即将您重定向到相册大小的照片版本.(不仅可以在浏览器中显示它,而且如果你想将图像下载到你的服务器,使用cURL并设置了follow_redirect选项.)
编辑:
从API v2.3开始,/picture不推荐使用Feed帖子的边缘.
然而,作为一个领域,仍然可以请求图片 - 但它将是一个小的.
但是full_picture也有.
因此/{object-id-from-feed}?fields=picture,full_picture可以用来请求那些,或者可以直接请求其他的Feed数据,如此/page-id/feed?fields=picture,full_picture,…(必须以相同的方式指定其他字段,例如消息等).
use*_*951 23
什么对我有用:从feed获取图片链接并用" _s.jpg" 替换" _n.jpg"
JK *_*iho 16
好的,我找到了更好的方法.使用图形API检索订阅源时,任何类型为的订阅源项photo都会调用一个字段object_id,而普通status类型的项目则不存在.使用该ID查询Graph API,例如https://graph.facebook.com/1234567890.请注意,对象ID不是下划线分隔的值,就像该Feed项的主ID一样.
object_id查询的结果将是一个新的JSON字典,您将拥有一个source属性,其中包含一个图像的URL,该图像到目前为止已满足我的需求.
另外还有一个images数组,其中包含更多图像的不同大小的图像URL,但其中的大小似乎不可预测,并且并非所有实际上都与该URL后面的图像的物理尺寸相对应.
我仍然希望有一种方法可以通过单个Graph API调用来完成此操作,但它看起来不像是有一个.
对于高分辨率图像链接:
我使用以下内容:
注:我给的理由_s -> _o黑客优先的object_id/picture做法是因为OBJECT_ID做法是不返回所有图像的效果.
var picture = result.picture;
if (picture) {
if (result.type === 'photo') {
if (picture.indexOf('_s') !== -1) {
console.log('CONVERTING');
picture = picture.replace(/_s/, '_o');
} else if (result.object_id) {
picture = 'https://graph.facebook.com/' + result.object_id + '/picture?width=9999&height=9999';
}
} else {
var qps = result.picture.split('&');
for (var i = 0; i < qps.length; i++) {
var qp = qps[i];
var matches = qp.match(/(url=|src=)/gi);
if (matches && matches.length > 0) picture = decodeURIComponent(qp.split(matches[0])[1]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种获取大图像的新方法.它出现在预览方法不起作用之后
/**
* return a big url of facebook
* works onky for type PHOTO
* @param picture
* @param is a post type link
* @return url of image
*/
@Transactional
public String getBigImageByFacebookPicture(String pictrue,Boolean link){
if(link && pictrue.contains("url=http")){
String url = pictrue.substring(pictrue.indexOf("url=") + 4);
try {
url = java.net.URLDecoder.decode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
StringBuffer sb = new StringBuffer("Big image for Facebook link not found: ");
sb.append(link);
loggerTakePost.error(sb.toString());
return null;
}
return url;
}else{
try {
Document doc = Jsoup.connect(pictrue).get();
return doc.select("#fbPhotoImage").get(0).attr("src");
} catch (Exception e) {
StringBuffer sb = new StringBuffer("Big image for Facebook link not found: ");
sb.append(link);
loggerTakePost.error(sb.toString());
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
享受你的大图像:)
| 归档时间: |
|
| 查看次数: |
19774 次 |
| 最近记录: |