2014-09-20 51 views
0

嗨我正在完成一個網站的Facebook飼料,並已注意到SDK返回質量很低的圖像。Facebook的PHP SDK Feed圖片調整大小?

在過去,我做了像str這樣的事情,把s.jpg換成n.jpg或o.jpg。我知道這些修復。在這種情況下他們不起作用。

此外,在過去,我也抓住了s130x130細分市場,並將其改爲調整大小。再一次,這在我的情況下不起作用。

我在Facebook供稿中返回的網址格式是我以前從未見過的格式。

https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xpa1/v/t1.0-9/s130x130/10426213_842375602447918_6490185390368658086_n.jpg?oh=a2db80558f6e5075b1b5c0cfbe9f6d09&oe=5487ACF5&__gda__=1418998035_89dfe352a7b600215d335f6317ed621d 

他們擁有所有常見的元素,但是,他們也有他們?哦& OE & GDA。這顯然是GET數據的形式。這些元素似乎必須在那裏,對於這個實例來說是正確的。這似乎是這些東西,防止重新調整大小。讓我來解釋:

我知道有一個形象的多種尺寸,因爲我可以在

http://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xpa1/v/t1.0-9/s720x720/10426213_842375602447918_6490185390368658086_n.jpg?oh=a23ee08c91265d6396c3f19e9dee5a22&oe=5493DB4F&__gda__=1422978473_f94a2eba685581687bc048a255c26ca4 

我首先想到的是剛剛嘗試並抓住像這樣

http://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xpa1/v/t1.0-9/s720x720/10426213_842375602447918_6490185390368658086_n.jpg

圖像訪問一個

http://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-xpa1/v/t1.0-9/s130x130/10426213_842375602447918_6490185390368658086_n.jpg

但是,返回錯誤 「處理請求時發生錯誤。 參考#50.e4bf6d8.1411232880.1d669acb」

我也得到了同樣的答覆,如果我嘗試編輯以前的鏈接(標爲代碼)和改變大小。

所以,最後,如何做一個重或者如何修改我在250或500 px球場中獲得的東西?似乎哦,gdp,並且oe以某種方式和我進行身份驗證真的不知道如何產生正確的答案,我到處看起來似乎人們只是試圖重新調整個人資料圖片的大小,但從來沒有內容。

這裏是我的完整代碼如下

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

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

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

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

// now we can access various parts of the graph, starting with the feed 
$pagefeed = $facebook->api("/" . $pageid . "/feed"); 
    //get page picture 
    $page_picture = 'http://graph.facebook.com/' . $pageid . "/picture?app_id=" . $config['appId']; 
    if(isset($fb_post_limit)){ 
     $numb_of_posts = $fb_post_limit; 
    }else{ 
     $numb_of_posts = 7; 
    } 
    // now we can access various parts of the graph, starting with the feed 
    $pagefeed = $facebook->api("/" . $pageid . "/feed"); 

    function check_picture($post){ 
     // if there is a picture post it 
     if(!empty($post['picture'])){ 
      echo '<div class="row">'; 
       echo '<img src="' . $post['picture'] . '" class="facebook-img col-xs-12"/>'; 
      echo '</div>'; 
     } 
    } 

?> 



<?php 

echo "<div class=\"fb-feed\">"; 

     // set counter to 0, because we only want to display $numb posts 
     $i = 0; 
     foreach($pagefeed['data'] as $post) { 

       if($post['from']['name'] == 'PAGE NAME'){ 
       if ($post['type'] == 'status' || $post['type'] == 'link' || $post['type'] == 'photo') { 
        // open up an fb-update div 
        echo "<div class=\"fb-update col-xs-12\">"; 


        $ids = explode('_', $post['id']); 

         // check if post type is a status 
         if ($post['type'] == 'status') { 
          if(!$post['story'] == 'PAGE NAME commented on a post.'){ 

           check_picture($post); 
           if (empty($post['story']) === false) { 
            echo '<img src="' . $page_picture . '" class="fb-profile" >' ; 
            echo "<p class=\"fb-message\" >" . $post['story'] . "</p>"; 


           } elseif (empty($post['message']) === false) { 
            echo '<img src="' . $page_picture . '" class="fb-profile" >'; 
            echo "<p class=\"fb-message\">" . $post['message'] . "</p>"; 

           } 
           // post the time 

           echo "<h5 class=\"fb-date\">Status updated: " . date("jS M, Y", (strtotime($post['created_time']))) . "</h5>"; 
           echo '<a class="facebook link btn btn-default btn-lrg" href="http://www.facebook.com/' . $pageid . '/posts/' . $ids[1] . '" >View Post</a>'; 
          } else { 
           $i--; 
          } 

         } 
         // check if post type is a link 
         if ($post['type'] == 'link') { 
          echo '<img src="' . $page_picture . '" class="fb-profile" >'; 
          if(!empty($post['message'])){ echo "<p class=\"fb-message\">" . str_replace($post['link'], '', $post['message']) . "</p>";} 
          echo "<h5 class=\"fb-date\">Link posted on: " . date("jS M, Y", (strtotime($post['created_time']))) . "</h5>"; 
          check_picture($post); 
          echo '<p class="fb-link-desc"' . $post['name'] . '</p>'; 
          if (empty($post['story']) === false) { 

           echo "<p class=\"fb-message\" >" . $post['story'] . "</p>"; 
          } 
          echo "<p ><a href=\"" . $post['link'] . "\" target=\"_blank\">" . $post['link'] . "</a></p>"; 
          echo '<a class="fb-link btn btn-default btn-lrg" href="http://www.facebook.com/' . $pageid . '/posts/' . $ids[1] . '" >View Post</a>'; 
         } 

         // check if post type is a photo 
         if ($post['type'] == 'photo') {echo '<img src="' . $page_picture . '" class="fb-profile" >'; 
          check_picture($post); 
          echo "<h5 class=\"fb-date\">Photo posted on: " . date("jS M, Y", (strtotime($post['created_time']))) . "</h5>"; 
          if (empty($post['story']) === false) { 
           echo "<p>" . $post['story'] . "</p>"; 

          } elseif (empty($post['message']) === false) { 
           echo "<p>" . $post['message'] . "</p>"; 
          } 

          echo '<a class="facebook link btn btn-default btn-lrg" href="http://www.facebook.com/' . $pageid . '/posts/' . $ids[1] . '" >View Post</a>'; 
         } 



        echo "</div>"; // close fb-update div 

        $i++; // add 1 to the counter if our condition for $post['type'] is met 
       } 

       // break out of the loop if counter has reached $numb 
       if ($i == $numb_of_posts) { 
        break; 
       } 
      } // end the foreach statement 
     } 

     echo "</div>"; 

    ?> 

回答

2

過了好久,而實驗的,我已經找到一個可行的解決方案。這是使用

<?php $picture = get_fb_image($fb['object_id']); ?> 
    <img src="<?php echo $picture['source']; ?>" alt="" /> 

的更簡化版本的它

require_once(facebook/facebook.php"); 
$config = array(); 
$config['appId'] = 'XXXXXXXXXXX'; 
$config['secret'] = 'XXXXXXXXXXXXXXXXXXXXXXXXX'; 
$config['fileUpload'] = false; // optional 

global $facebook; 
$facebook = new Facebook($config); 

// get feed 
function get_fbfeed(){ 
    global $facebook; 
    $pageid = 'XXXXXXX'; 
    $numberOfPosts = $num; 
    $posts = $facebook->api("/" . $pageid . "/feed?limit=" . $numberOfPosts); 
    return $posts; 
} 

function get_fb_image($image){ 
    global $facebook; 
    $post = $facebook->api("/" . $image); 
    return $post; 
} 

,然後我在循環中然後每次都會讓我的默認或更高的水庫變化。

這種方法的唯一問題是,如果用戶發佈圖庫,它會崩潰。我正在尋找另一個線程中的修復程序。

1

我維護從一個很久沒去的開發人員的代碼,並且我遇到同樣的問題。 (我的代碼基於這方面的工作:http://www.ipragmatech.com/create-facebook-yiiframework-graphapi.html

我還沒有找到一個100%可靠的解決方案,但一些FB飼料圖片可能有一個大的分辨率。使用您發佈的URL,刪除下列URL部分:/v/t1.0-9/s130x130

這應該離開你,顯示大圖片的URL:

如果您想要使用小而大的尺寸而沒有大量的URL處理,請執行上述操作,但將URL中的「_n」更改爲「_s」或「_b」:

你應該能夠使用str_replace做到這一點的飛行從API網址:

str_replace("/v/t1.0-9/s130x130","", $post['picture']) 

然而,這將僅適用於遵循此特定網址結構的照片。我已經看到其他飼料照片使用完全不同的路徑,所以那些仍然顯示小尺寸,直到我們可以找出它們。

希望這有助於!

一些鏈接,我一直在讀:

+0

我想至少給你upvote。這確實解決了一些圖像的問題。其實大多數情況下,然而它並沒有完全解決這個問題,因爲有許多圖像看起來是錯誤的。 謝謝我將把這個添加到幫助的事情列表中。 – user1452407 2014-11-18 13:38:27