【问题标题】:Shadowbox PHP Facebook Graph Api ErrorShadowbox PHP Facebook Graph Api 错误
【发布时间】:2012-09-29 10:43:56
【问题描述】:

如您所知,我正在为我的网站使用 shadowbox 通过单击缩略图打开大图像。我的问题是,我正在获取用户的 Facebook 个人资料照片,例如:

$large = "https://graph.facebook.com/{$id2}/picture?type=large";
$small = "https://graph.facebook.com/{$id2}/picture?type=square";

而且它工作得很好,但是在 shadowbox 中我有大图像的问题..

我在 shadowbox 中这样称呼它:

<a href="<?php echo $large; ?>" rel="shadowbox">
<img style="max-width:50px; max-height:50p;" src="<?php echo $small; ?>" />
</a>

你可以想象,小图显示完美,但是当我点击带有href的小图时,它无法显示大图。

我尝试将大图像变量更改为此:

$large = "https://graph.facebook.com/{$id2}/picture?type=large&redirect=false";

但它也未能显示大图..

希望你能帮忙,谢谢

【问题讨论】:

  • $id2 的样本值是多少? $large 的样本值呢?
  • 你能确认你甚至得到了一个 URL 吗?如果不是,那么您的 PHP 就有问题。如果你是并且它只是没有正确显示,那么你就遇到了与 Shadowbox 相关的 Javascript 的问题。
  • $id2 是使用 facebook 登录我的网站的用户 id 的值,我也没有返回 url,尝试了重定向 false 和正常的,但都没有工作
  • 如果它只是图片的 url,你能仔细检查它是否有效吗?
  • &lt;a href="https://graph.facebook.com/*******/picture?type=large" rel="shadowbox"&gt;&lt;img style="max-width:50px; max-height:50px;" src="https://graph.facebook.com/*******/picture?type=normal" /&gt;******&lt;/a&gt; 这就是浏览器的显示方式,正如我所说的,没有显示更大的图像..

标签: php javascript facebook facebook-graph-api shadowbox


【解决方案1】:

我之前没有使用过 Shadowbox,所以我不知道它在幕后是如何工作的。可能是它无法处理为大图像返回另一个 url 的 url。

尝试使用 php 进行 API 调用,然后将此结果传递给 shadowbox。

$large = file_get_contents("https://graph.facebook.com/{$id2}/picture?type=large&redirect=false");

当然,像这样使用file_get_contents() 是一种快速而肮脏的方法。如果可行,在将其推广到生产站点之前,您需要使用 cURL 或更好的 Facebook PHP SDK 来执行此操作。

假设您使用 shadowbox 在一个页面上显示多个用户的照片,您最终可能会在某个时候遇到 API 限制。为防止这种情况发生,请重做 API 调用以一次抓取多张照片:

$large_photos = $fb->api('/picture?type=large&redirect=false&ids=' . 
                           implode($ids_array, ','));

【讨论】:

  • 谢谢@cpilko,它获得了完整的 url,但由于获取 url 错误而不再显示,即使我没有通过插入进行输入清理,并且 db 行是相同的。输出为:&lt;a href=""https:\/\/fbcdn-profile-a.akamaihd.net\/hprofile-ak-snc7\/*****_******" rel="shadowbox"&gt;
  • 我也在使用 pdo 和数据库操作,如果是问题,我该如何防止?或 preg_replace 之类的东西会起作用吗?
  • 尝试通过stripslashes()运行你的变量
  • 补充说现在可以更好地添加到数据库但仍然存在问题"https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc7/372309_802399776_165 有一个" 标记是不必要的,这就是我现在打电话的方式&lt;a href="&lt;?php echo stripslashes($large); ?&gt;" rel="shadowbox"&gt;
  • 您应该看看" 是在哪里添加的。目前您可以使用substr($string,1); 将其删除
【解决方案2】:

https://graph.facebook.com/{$id2}/picture?type=large&amp;redirect=false 基本上会返回一个文本内容图像的 URL。这就是它没有显示的原因。

例如。

https://graph.facebook.com/yungsenriady.budiman.3/picture?type=large&redirect=false

返回

"https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash3/157348_100001167523294_1569184886_n.jpg"

尝试使用

https://graph.facebook.com/{$id2}/picture?type=large

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多