或許以上這些資訊努力在 Google 上搜尋都找的到,但是有開發過的都知道 Facebook API 有做過更新,網路上的一堆教學文章全都不適用了,這篇文章也是我看了好多人家遇到的問題,整理出來的,算是做一個新 Facebook API 撰寫教學吧。
首先,申請 Facebook app 過程一樣沒變,應該說看的懂中文的都會申請。而基本範例 Facebook Developer 上也有範例程式碼,如何去下載 Facebook APP SDK 都請先去 Google,或是上 Facebook Developer 學吧。以下範例將利用 PHP 來做教學動作。
撰寫 Facebook app 第一步就是要把 SDK include 進來嚕:
require_once 'facebook-php-sdk/src/facebook.php';接下來我們將定義一些參數,我們可先到 app 的資訊頁看:
define('FB_APIID', '(1)');FB_APIID:這邊將填入 app 資訊頁上的 App ID/API Key (1)。
define('FB_SECRET', '(2)');
define('FB_CANVAS', 'http://apps.facebook.com/your_app/');
FB_SECRET:這邊將填入 app 資訊頁上的 應用程式密鑰 (2)。
FB_CANVAS:就是你的應用程式網址啦,app 資訊頁上的 畫布頁。
再來我們將建立一個 Facebook application instance:
$facebook = new Facebook(array(之後我們將要存取一些使用者資訊,所以要先讓使用者同意我們存取他的一些資訊,下面就是登入連結:
'appId' => FB_APIID,
'secret' => FB_SECRET,
'cookie' => true,
));
$session = $facebook->getSession();
$scope = "read_friendlists,publish_stream";scope 部分就是將要存取使用者額外的哪些資訊,這部份的參數可以參閱 permissions reference。
$login_url ="https://www.facebook.com/dialog/oauth?client_id=" . FB_APIID . "&redirect_uri=" . urlencode(FB_CANVAS) . "&scope=" . $scope;
接下來我們就要來取得使用者資訊了:
$me = null;取得完資訊後我們就可以做任何事了,下面就是當我們無法存取資訊時,需要要求使用者允許我們應用程式,來存取他們的資料:
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$friends = $facebook->api('/me/friends');
} catch (FacebookApiException $e) {
error_log($e);
}
}
if ($me) {大家可以試著利用 print_r 來觀看 $me 陣列以及 $friend 陣列。
echo $uid;
} else {
echo("<script> top.location.href='" . $login_url . "'</script>");
}
最後來到我們的第三部份『在使用者的塗鴉牆上發布訊息』,大家只要使用過 Facebook 一定都會發現,別人的塗鴉牆常出現誰誰誰正在使用某應用程式,作為一個行銷工具,這個技巧是一定要學會的!作者我(Mr. Tony),把這個部份寫成一個小函式,只要把一些資訊參數丟進去就可以嚕。
function PublishStream($uid, $message, $attachment_name, $attachment_url, $attachment_description, $image_src, $image_link, $text, $href){$id:要發佈在誰的塗鴉牆上,通常是使用者本身,若要發佈到其他人的塗鴉牆上,就必須先取得對方的同意。
global $facebook;
$attachment = array(
"name"=>$attachment_name,
"href"=>$attachment_url,
"description"=>$attachment_description,
"media" => array(
array(
"type" => "image",
"src" => $image_src,
"href" => $image_link
)
));
$action_links = array(array("text"=>$text, "href"=>$href));
$facebook->api( array(
'method' => 'stream.publish',
'target_id' => $uid,
'message' => $message,
'attachment' => $attachment,
'action_links' => $action_links
));
}
$message:如成果圖中的 (1)。
$attachment_name:成果圖中的 (3)。
$attachment_url:成果圖中的 (3) 的連結。
$attachment_description:成果圖中的 (4)。
$image_src、$image_link:成果圖中的 (2)。
$text、$href:成果圖中的 (5)。
(成果圖)
完整程式碼請點這邊觀看【完整程式碼】,最後就祝大家順利成功啦!



我覺得少一個簡潔有力的標題,哈哈
回覆刪除那巴巴有好的建議嗎XD
回覆刪除感謝分享 不知您有沒一些其他的範例?
回覆刪除您好,不知道你說的是有關哪些範例呢?
回覆刪除我使用後出現錯誤訊息
回覆刪除Call to undefined method Facebook::getSession()
請問要怎麼解決呢?
補充一下..錯誤訊息是說
回覆刪除$session = $facebook->getSession();
這行有問題
原來是SDK3.0已不支援getSession();..而且好像還加上授權過期的問題.看來要貼文到使用者塗鴉牆是越來越難了
回覆刪除改用 SDK 2.1.2 吧,畢竟太多資料都是 SDK 2 的
回覆刪除感謝.改用2.1.2後就正常了.不曉得站大是否有貼到粉絲專頁塗鴉牆的相關API呢? 我GOOGLE過都沒看到較新的相關資料
回覆刪除你可以去書局看看有沒有相關的 facebook 的書籍,不然就是到 facebook developers 網站查 API 了。
回覆刪除好像是 manage_pages:
http://developers.facebook.com/docs/reference/api/permissions/