2015-07-06 13 views
5

Ho creato un semplice widget per visualizzare un post dalla pagina di Facebook. Ecco il codice:Facebook Graph Api ottiene l'immagine dei post collegati

//VARS 
    $title = $instance['title'];   
    $app_id = $instance['add_id']; 
    $app_secret = $instance['app_secret']; 
    $page_id = $instance['pade_id']; 
    $my_url = $instance['my_url']; 
    $page_name = $instance['page_name']; 
    $message_lenght = $instance['message_lenght']; 

    //CONFIGS 
    // get user access_token 
    $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' 
     . $app_id . '&redirect_uri=' . urlencode($my_url) 
     . '&client_secret=' . $app_secret 
     . '&grant_type=client_credentials'; 

    // response is of the format "access_token=AAAC..." 
    $access_token = substr(file_get_contents($token_url), 13); 

    $fql_query_url = 'https://graph.facebook.com/v2.3/' . $page_id 
     . '/posts?access_token=' . $access_token; 
    $fql_query_result = file_get_contents($fql_query_url); 
    $fql_query_obj = json_decode($fql_query_result, true); 
    $data = $fql_query_obj['data'][0]; 

    $img_query_url = 'https://graph.facebook.com/v2.3/' . $data['object_id'] . '/?access_token=' . $access_token; 
    $img_query_result = file_get_contents($img_query_url); 
    $img_query_obj = json_decode($img_query_result, true); 
    $msg = substr($data['message'], 0, $message_lenght). '... '; 

    if($img_query_obj['source'] == ""){ 
     $img_url = $data[picture]; 
    }else{ 
     $img_url = $img_query_obj['source']; 
    } 


    //START APP 
    echo $before_widget; 

    if($title !== ""){ 
     echo '<h3>'.$title.'</h3>'; 
    } 
    ?> 
    <div class="facebook-widget"> 
     <pre class="hide"><?php var_dump($data[picture]); ?></pre> 
     <div class="img"><img src="<?php echo $img_url; ?>"></div> 
     <div class="text"> 
      <div class="date"> 
       FACEBOOK/
       <?php echo date("m.d.Y", strtotime($data['updated_time'])); ?> 
      </div> 
      <a class="page_title" target="_blank" href="<?php echo $my_url; ?>">/<?php echo $page_name; ?></a> 
      <p><?php echo mb_substr($msg, 0, 95); ?>[...]<a href="<?php echo $data[link]; ?>" target="_blank"> (read more)</a></p>       
     </div> 
     <div class="facebookfollow"> 
      <a class="facebook-fallow-button" href="<?php echo $my_url; ?>" target="_blank">Follow Us</a> 
     </div> 
    </div> 

    <?php 
    echo $after_widget; 

Come potete vedere ho aggiunto istruzione condizionale per verificare se c'è foto di posta. $ img_query_obj ['source'] è per i post pubblicati in modo normale - un po 'di testo + caricamento di immagini, secondo - per post collegati - ottieni un'immagine 130x130 dalla query di dati, perché non c'è immagine in modo standard.

Quindi la mia domanda è, come ottenere l'immagine post se c'è solo un'immagine 130x130 in risposta?

Saluti

risposta

1

vedo due modi .. nessuno di loro è perfetto ..

  1. In collegamento "immagine" tra w = 130 & h = 130 & d = ASDDSA ... voi hanno & url = http://some.urlencoded.link.to.picture.jpg - in modo da poter scaricare e ridimensionare sul server di giro ..

  2. Ignora "immagine" e ottenere "link" - ogni collegamento (http://some.page/article) è oggetto grafico

https://graph.facebook.com/v2.3/http%3A%2F%2Fstackoverflow.com%2F?access_token=YOUR_TOKEN_HERE

{ 
    "og_object": { 
     "id": "10150180465825637", 
     "description": "Q&A for professional and enthusiast programmers", 
     "title": "Stack Overflow", 
     "type": "website", 
     "updated_time": "2015-07-10T22:26:23+0000", 
     "url": "http://stackoverflow.com/" 
    }, 
    "share": { 
     "comment_count": 11, 
     "share_count": 31967 
    }, 
    "id": "http://stackoverflow.com/" 
} 

In risposta si otterrà og_objet.id e ora si può provare:

https://graph.facebook.com/v2.3/10150180465825637?access_token=YOUR_TOKEN_HERE

{ 
    "created_time": "2008-04-19T03:48:51+0000", 
    "title": "Stack Overflow", 
    "type": "website", 
    "description": "Q&A for professional and enthusiast programmers", 
    "image": [ 
     { 
     "height": 316, 
     "url": "http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon\u00402.png?v=ea71a5211a91&a", 
     "width": 316 
     } 
    ], 
    "is_scraped": true, 
    "updated_time": "2015-07-10T22:26:23+0000", 
    "url": "http://stackoverflow.com/", 
    "id": "10150180465825637" 
} 

In risposta si avrà un'immagine URL, è può ottenere e ridimensionare ..