我们的应用程序使用PHP-以及Facebook的JS-SDK。我们可以通过两个sdks访问用户图像和他朋友的图像。将照片上传到用户相册也可以。
用户当前选择他的一个图像,这些图像在我们的服务器上被操纵并上传到Facebook,进入它来自的相册。那部分有效。我们现在想要将上传的图像发布到用户墙上。 Facebook本身会在用户Feed上生成有关新上传图片的帖子(可以在上传请求中禁用),但这些帖子无法自定义。标准的facebook-post请求需要一个可选照片的URL。该文档声明不允许链接到facebook内容传送网络中的图像(图形api已经确认它会引发相应的错误)。
是否有可能以某种方式创建包含图库图像的标准墙贴?理想情况下,它会使用gallery-popup,但这显然是非常好的。
外部托管的副本是我们已经知道的(不需要的)变通方法。重新加载图像是一个选项,只要它没有在图库中显示两次。
答案 0 :(得分:4)
简单解决方案:
通过tinyurl api为你获取一个小小的fbcdn'ed图片:
上面的网址示例:
http://tinyurl.com/api-create.php?url=http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc3/13943_196960329960_683709960_2997879_7206516_n.jpg
返回:
http://tinyurl.com/3ta96kh
然后使用此网址作为“图片”,我在这里试了一下它的确有效! :http://jsfiddle.net/dwarfy/VYAeD/27/
还有另一个解决方案here但似乎facebook更正了它,当我使用https://graph.facebook.com/PICTURE_ID作为图片而不是FBCDN图片网址发布时,它仍然说明了facebook CDN的错误。
我认为这是最好的解决方案......
我的示例不使用link参数,但您可以将其设置为图库图片...
答案 1 :(得分:1)
确实你不能发布到用户的墙上保存在fb上的图像,但你也不必将它物理保存在你的服务器上。如果要发布图像,例如:
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc3/13943_196960329960_683709960_2997879_7206516_n.jpg
facebook你知道不会接受这个。但发布这样的内容是没有问题的:http://yourserver.com/script.php?image=a4.sphotos.ak.fbcdn.net/hphotos-ak-snc3/13943_196960329960_683709960_2997879_7206516_n.jpg(没有http:// - 重要的是,如果你包括http:// facebook会发现发生了什么 - 我们不想要它:)
script.php是服务器上执行此操作的php文件:
<?
$url = "http://".$_GET['image'];
header('Content-type: image/jpeg');
echo file_get_contents($url);
?>
或类似的东西:
<?
$url = "http://".$_GET['image'];
$image = imagecreatefromjpeg($url);
//some image modifications here//
header('Content-type: image/jpeg');
echo imagejpeg($image, null, 100);
?>
您还可以使用网址添加数据库并发布如下内容:http://yourserver.com/script.php?imageid=ID隐藏所有图片的真实路径。
如果您想在墙上发布图片后节省流量,只需重定向:
<?
//if published then just redirect
$url = "http://".$_GET['image'];
header('Location: '.$url); die();
?>
答案 2 :(得分:0)
您必须制作该图像的副本,否则您无法在标准帖子对话框中使用此图像。
使用PHP函数
copy()
我知道您正在寻找任何其他选择,但在您的服务器或任何其他服务器上创建备用映像是唯一的解决方案。