[Facebook API] 如何抓取粉絲頁所上傳的照片?

要抓取資料一定需要Access token
Facebook每個App都會有自己的Access token可用
可用Graph API或是在Access Token Tool 中查詢自己App的Access token
要抓取粉絲頁所上傳的API為https://graph.facebook/粉絲頁ID/photos/uploaded



由此可得知吐出的結果為JSON陣列,但如何知道粉絲頁ID?
其實也僅是將粉絲頁的網址中www換成graph就會顯示ID
可以用PHP做點簡單的查詢程式
//取得粉絲團頁面的資訊(json陣列)

    public function get_page_info($identifier=''){

     try{

      $url='https://graph.facebook.com/'+$identifier;

      //echo $url;

      $page_info=file_get_contents($url);

      return $page_info;

     }catch(Exception $e){

      return "error:".$e;

     }

    }

接下來可以利用粉絲團ID來查詢粉絲團所上傳照片之資訊
//根據粉絲團if取得照片相關資訊by open graph api

    public function get_photo_by_graph($page_id){

     try{

      $url='https://graph.facebook.com/'.$page_id.'/photos/uploaded';

      $page_info=file_get_contents($url);

      return json_decode($page_info);

     }catch (Exception $e){

      return "error:".$e;

     }

    }

public function facebook_page_photo_by_graph(){

 $this->fb->set_access_token(self::get_app_token());

 $photos=$this->fb->get_photo_by_graph(self::facebook_page_id());

 $like_person_list = array();

 foreach($photos->data as $pho){

  //print_r($pho);

  echo 'id='.$pho->id.'<br/>';

  echo 'link='.$pho->link.'<br/>';

  echo 'source='.$pho->source.'<br/>';

  echo 'name(desciption=)'.$pho->name.'<br/>';

  foreach($pho->likes->data as $person){

   $like_person_list['id'][]=$person->id;

   $like_person_list['name'][]=$person->name;

  }

  //////paging of likes

  if(isset($pho->likes->paging->next)){

   $url=$pho->likes->paging->next;

   do{

    $like_person_next = json_decode(file_get_contents($url));

    if(empty($like_person_next)){

     continue;

    }

    foreach($like_person_next->data as $person){

     $like_person_list['id'][]=$person->id;

     $like_person_list['name'][]=$person->name;

    }

    if(!empty($like_person_next->paging->next)){

     $url=$like_person_next->paging->next;

    }else{

     break;

    }

   }while(true);

  }

  echo 'likers=';

  print_r($like_person_list);

  $like_person_list = array();

  echo '<br/>';

  echo '<hr>';

 }

  /*

   * self::facebook_page_photo_by_graph($url);

   * */
}

留言

這個網誌中的熱門文章

[翻譯] 介紹現代網路負載平衡與代理伺服器

Grafana K6

Linux 事件驅動筆記