[API] Facebook Graph API - Publish/Share

由於公司有需要用到利用FB分享,故來筆記一下

用FB分享連結有三種方式



  1. Social Plugin
  2. Share Dialog
  3. Graph Api
第一種就不多加贅述
直接從  Share Dialog開始,根據Facebook Developer上寫直接用
JS SDK的FB.ui去呼叫,分享成功後會將response丟回
response是json,大概長的樣子是{"post_id":"123456789"}之類的
有取得類似的值就代表分享成功囉 !
程式碼如下

FB.ui({
  method: 'share',
  href: 'https://developers.facebook.com/docs/',
}, function(response){});

接下來是使用Graph API的部分
基本的url為 https://graph.facebook.com/fb-id/feed
使用POST將必須參數帶入:

  • link
    • 所要分享的連結
  • picture
    • FB貼文上左編的縮圖
  • name
    • 連結的名稱
  • description
    • 連結的描述
  • access_token
    • 要獲得使用者的access token才可以有發文的權限
  • message
    • 發文的內容
另外注意,要取得access token時,scope要設定publish_actions
PO出來成果如下圖

附上部分PHP Code如下 :

$post_data = array(
 "link"=>"https://www.facebook.com/",
 "picture"=>"https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2365-6/851585_216271631855613_2121533625_n.png",
 "name"=>"I'm name!",
 "caption"=>"I'm caption!",
 "description"=>"I'm descriptions!",
 "access_token"=>$user_access_token,
 "message"=>"I'm a message!"
);
self::facebook_api('post',$fb_id,'feed',$post_data);
/*
 * 用cURL做POST的動作去呼叫Facebook Graph API
 */
public function facebook_api($action='post',$fb_id,$fb_act,$post_data){
 if($action == 'post'){
  $url = 'https://graph.facebook.com/'.$fb_id.'/'.$fb_act; 
  $ch = curl_init();
  $options = array(
   CURLOPT_URL=>$url,
   CURLOPT_POST=>true,
   CURLOPT_POSTFIELDS=>http_build_query($post_data),
  );
  curl_setopt_array($ch, $options);
  $result = curl_exec($ch);
  curl_close($ch);
  print_r($result);
 }else if($action == 'get'){
   
 }
}

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

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