jjzjj

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

coder 2024-04-21 原文

我正在尝试通过 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 - 在 facebook 自定义提要中操作照片 url(图形 API)的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  3. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  4. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  5. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  6. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  7. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  8. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  9. ruby - 如何在 Grape 中定义哈希数组? - 2

    我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>

  10. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

随机推荐