FB.ui中的图片无法正常显示

3

试图在墙上帖子中发布图片的代码,前几个月运作得很好。 突然间它停止工作了。

当我使用https进行测试时,它无法工作,但在http中可以工作。

如果协议是https,则APP URL使用https,否则使用http。

$protocol = "http";
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']!="off")
    $protocol = "https";

define("CANVAS_URL","$protocol://apps.facebook.com/appname/");
define("APP_URL","$protocol://domain.com/content/appname/live/");

FB.ui(
        {

         method: 'feed',
         name: 'my app name',
         link: <? echo "'".CANVAS_URL."'";?>,
         picture: <? echo "'".APP_URL."'";?>+image,
         caption: _caption,
         description: _description
       }, function(response) {
         if (response && response.post_id) 
         {
           // published
         } else {
           // not published
         }
       }
    );
3个回答

6
尝试不使用SSL URL获取图像(但仍然在链接的CANVAS_URL中使用它)。Facebook代理显示给用户的图像请求,因此即使您从非SSL URL提供它,Facebook内部使用的图像也将通过SSL传达给用户。
至于为什么SSL URL无法使用,可能是Facebook用于检索图像的爬虫不认识您正在使用的证书链。在浏览器中,您的证书可以正常工作,但是在Linux命令行上通过wget检索时(这很可能是FB爬虫比浏览器更接近的环境),存在无法验证证书的错误。

我尝试使用以下方式指定图像URL: http://url/to/image/image.png 以及相对路径: image/image.png但在HTTPS下,两种方式都无法正常显示图片,只会显示一个细灰色条。在Firebug中也没有看到加载图片的请求。 - Barış Uşaklı
奇怪 - 当您通过HTTP加载页面本身时,完全相同的Feed请求是否有效,但HTTPS无效? - Ben Regenspan
我觉得这里可能有个bug,但是在https://www.nytimes.com上运行得很好:`FB.ui({'method': 'feed', 'picture': 'http://i1.nyt.com/images/2011/09/18/nyregion/18ADOPT1_SPAN/18ADOPT1_SPAN-hpMedium.jpg', 'link': 'https://shadowytree.com/stsite/' } )`。 - Ben Regenspan

1

我刚刚发现一件事,图片大小似乎也起了作用。我的图片URL指向原始的完整尺寸jpg格式,但它没有显示出来。但是当我链接到一个小得多的版本时,它就显示了!


你使用了什么图像尺寸? - Mladen

1

我在我的页面上有四个帖子,其中两个帖子出现了与黑骑士相同的“细灰条”问题。
我去掉了https://,现在所有的都正常了...

之前...
图片:'https://mysite.com/images/' + image,
现在...
图片:'mysite.com/images/' + image,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接