玩 Plurk 一陣子,官方終於將 Plurk API 弄出來囉,如此有更統一的 API 來把玩,最棒的是不必擔心用的 Unofficial Plurk API 會不會哪一天掛掉,當然並不是說官方的就不會更改 API 架構,只是換個角度想,API 的維護交給官方,讓製作 Plurk 架構的人處理,比自行摸索要來的更有效率。(...突然回想起當初去hack某家網誌發文的辛苦歷程...)
在 Plurk API 上有 Java 跟 Python 的範例程式,但竟然沒有我最擅長使用的 PHP 。所以,就來試試 PHP 吧!
- 申請 Plurk API Key
- 幾乎大家都用 API Key 的方式管理,申請方式就只要在上述網頁 Get an API key 中,填寫 "What are you planning to make?" & "Your full name" & "Your email" ,最重要的就是 "Your email" 啦,因為 API Key 會用寄信的方信寄到指定的信箱,而其他兩個資料,我想只是一種統計吧?
- 由於一些動作都是要使用 HTTP 甚至 HTTPS 進行溝通,在 PHP 上滿建議使用 cURL 函數,先建一個小function吧。
- function do_act( $target_url , $type , $data , $cookie_file = NULL )
{
$ch = curl_init();
if( $type == 'GET' ) // GET
{
$target_url .= http_build_query( $data );
curl_setopt($ch, CURLOPT_URL, $target_url );
}
else // POST
{
curl_setopt( $ch , CURLOPT_URL , $target_url );
curl_setopt( $ch , CURLOPT_POST , true );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( $data ) );
}
if( isset( $cookie_file ) ) // cookie
{
curl_setopt( $ch , CURLOPT_COOKIEFILE , $cookie_file );
curl_setopt( $ch , CURLOPT_COOKIEJAR , $cookie_file );
}
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true );
//curl_setopt( $ch , CURLOPT_FOLLOWLOCATION , true );
//curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER , false );
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
- function do_act( $target_url , $type , $data , $cookie_file = NULL )
- 連續範例動作
- // Users/login
print_r(
do_act(
'http://www.plurk.com/API/Users/login' ,
'POST' ,
array(
'api_key' => 'Your_Plurk_API_Key' ,
'username' => 'Your_Account' ,
'password' => 'Your_Password'
) ,
'/tmp/plurk_cookie'
)
);
echo "\n\n";
// Timeline/getPlurks
print_r(
do_act(
'http://www.plurk.com/API/Timeline/getPlurks' ,
'POST' ,
array(
'api_key' => 'Your_Plurk_API_Key' ,
'offset' => '2009-6-20T21:55:34'
) ,
'/tmp/plurk_cookie'
)
);
echo "\n\n";
// Timeline/plurkAdd
print_r(
do_act(
'http://www.plurk.com/API/Timeline/plurkAdd' ,
'POST' ,
array(
'api_key' => 'Your_Plurk_API_Key' ,
'qualifier' => 'likes' , // loves , likes , shares , ...
'content' => '(LOL)' ,
) ,
'/tmp/plurk_cookie'
)
);
- // Users/login
至於更多的 Plurk API 請上官網看囉,用法應該很簡單,只需把上頭的 array 中的變數改一下就行啦,至於回傳資料是 JSON 格式,有需要的請自行去處理囉,上述範例可完成發一則噗浪囉,有些 API 是需要 Login 的,那就要記得先完成一次 Users/login ,將資料存在 cookie 中,才能接著去嘗試其他 API 啦。
剩下的有空再來玩。
實作範例(@2010/01/08更新)
// Users/login
print_r(
do_act(
'http://www.plurk.com/API/Users/login' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'username' => 'changyy_paper' ,
'password' => 'qazwsxed'
) ,
'/tmp/frank'
)
);
echo "\n\n";
// Timeline/getPlurks
print_r(
do_act(
'http://www.plurk.com/API/Timeline/getPlurks' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'offset' => '2009-6-20T21:55:34'
) ,
'/tmp/frank'
)
);
echo "\n\n";
// Timeline/plurkAdd
print_r(
do_act(
'http://www.plurk.com/API/Timeline/plurkAdd' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'qualifier' => 'likes' , // loves , likes , shares , ...
'content' => '(LOL)' ,
) ,
'/tmp/frank'
)
);
print_r(
do_act(
'http://www.plurk.com/API/Users/login' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'username' => 'changyy_paper' ,
'password' => 'qazwsxed'
) ,
'/tmp/frank'
)
);
echo "\n\n";
// Timeline/getPlurks
print_r(
do_act(
'http://www.plurk.com/API/Timeline/getPlurks' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'offset' => '2009-6-20T21:55:34'
) ,
'/tmp/frank'
)
);
echo "\n\n";
// Timeline/plurkAdd
print_r(
do_act(
'http://www.plurk.com/API/Timeline/plurkAdd' ,
'POST' ,
array(
'api_key' => 'cGRgp6VPBY0oNwP47iudVmVHzOlDqzIj' ,
'qualifier' => 'likes' , // loves , likes , shares , ...
'content' => '(LOL)' ,
) ,
'/tmp/frank'
)
);
版大,我照著你的文章修改了API_KEY
回覆刪除我對PHP沒有很了解,一開始把你的範例都寫在function裡面
在Dreamweaver檢測網頁是正常的
不過在Plurk上卻沒有任何測驗時輸入的字串
所以我想應該是要把底下的範例拉出function區塊...
可是一抽出function區塊...就會出現excwption 好像突然不認識 curl_init() 這個方法了
版主回覆:(05/07/2010 04:58:01 AM)
它是需要 curl 的支援, 請增加這個 library 來使用囉, 若你的 PHP 跑在 Windows 上, 那我記得預設的安裝檔常常已經有了, 但預設沒有打開, 可能只要在 php.ini 啟用就行了(記得確定extension_dir位置以及拿掉extension=php_curl.dll前面的 ; 囉)