php - 在 facebook 自定义提要中操作照片 url(图形 API)

标签 php facebook facebook-graph-api feed photos

我正在尝试通过 Facebook 粉丝页面在我的网站上显示一些自定义 Facebook 提要。 这是我使用的 php 的一个总结示例,它工作正常。

[...html code...]

// include the facebook sdk
require_once('resources/facebook-php-sdk-master/src/facebook.php');

// connect to app
$config = array();
$config['appId'] = 'MY_APP_ID';
$config['secret'] = 'MY_SECRET_CODE';
$config['fileUpload'] = false; // optional

// instantiate
$facebook = new Facebook($config);

// set page id
$pageid = "MY_PAGE_ID";

// access to the graph, starting with the feed
$pagefeed = $facebook->api("/" . $pageid . "/feed");

[...html code...]

$i = 0;
foreach($pagefeed['data'] as $post) {
// check if post type is a photo and catch the various part of the graph
if ($post['type'] == 'photo') {
    //grab the thumbnail url in the graph           
    $picture_url = $post['picture'];
    //get true sized photo by manipulating its url  
    $picture_url_big = str_replace("s130x130/","", $picture_url);

    echo "<p><img class=\"img-icon\" src=\"" . $post['icon'] . "\"></p>";             
    echo "<h2 class=\"data-post\">" . date("j-n-Y", (strtotime($post['created_time']))) . "</h2>";
    //displaying the photo
    echo "<div class=\"img-thumb\"><a href=\"" . $post['link'] . "\" target=\"_blank\"><img src=\"" . $picture_url_big . "\"></div></a>";
    echo "<p class=\"manda-a-capo\"></p>";
        if (empty($post['story']) === false) {
            echo "<p>" . $post['story'] . "</p>";
        } elseif (empty($post['message']) === false) {
            echo "<p>" . $post['message'] . "</p>";
        }
            echo "<p><a href=\"" . $post['link'] . "\" target=\"_blank\"><u><b>Vedi foto</b></u></a></p>";
            echo "<p class=\"manda-a-capo\"></p>";
                if ($post['shares']['count'] != "") {
                    echo "<p class=\"manda-a-capo share-num\">" . $post['shares']['count'] . " condivisioni.</p>";
                }
}
$i++;
}

[...other code...]

facebook 图仅包含照片的缩略图 url,即 130x130px。我发现一些拇指在 url 中有一个“/s130x130/”参数,如果你删除这个参数,你会得到照片的实际大小。 所以这解释了这部分代码(如上):

//grab the thumbnail url in the graph           
$picture_url = $post['picture'];

//get true sized photo by manipulating its url  
$picture_url_big = str_replace("s130x130/","", $picture_url);

//then displaying the photo
echo "<div class=\"img-thumb\"><a href=\"" . $post['link'] . "\" target=\"_blank\"><img src=\"" . $picture_url_big . "\"></div></a>";

不幸的是,我注意到并非页面中的所有照片都有此参数,其中一些甚至具有不同的 url 结构。 所以最后的结果是我只能达到实际大小的几张照片,其他的仍然是断开的链接。

有没有办法操纵 url 来获取所有照片的实际大小? 有什么建议吗?

谢谢。

附言 这是查看 fb 图的 php:

<?php 
    echo "<pre>";
    print_r($pagefeed);
    echo "</pre>";
?>

最佳答案

我找到了一个临时解决方案。为了显示丢失的链接,我添加了一个 php 函数来检查图像 url 是否存在。

function checkRemoteFile($picture_url_big)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$picture_url_big);
    // don't download content
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(curl_exec($ch)!==FALSE)
    {
        return true;
    }
    else
    {
        return false;
    }
}

还有一个位于“echo”上方的控件

if (checkRemoteFile($picture_url_big)) {
    //echo "image exist ";
    $check = true;
    $picture_url_big;
} else {
    //echo "image does not exist ";
    $check = false;
    $picture_url_big = $picture_url;
}

关于php - 在 facebook 自定义提要中操作照片 url(图形 API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24907091/

相关文章:

php - 我应该从哪里开始正确理解 ORM 的概念

php - 使用 PHP 7 在 macOS 10.13 上进行 Xdebug

jquery - 使用 Facebook API v.2.1 检索大个人资料图片

JSON 中的 Facebook OAUTH 访问 token 响应

android - 手机扫描二维码后打开图谱 Action 不被接受

javascript - 使用 Facebook 相册图 API 在照片弹出窗口中需要标题

php - 为什么用php无法将日期写入mysql?

javascript - 双击 td 时如何在警告框中将数据库中的数据显示为 html 表

javascript - <div id ="fb-root"和 JS 的最佳位置在哪里?

ios - 登录到 Facebook 评论 iOS (swift) 没有响应