Facebook多了個人封面功能之後,一直沒用過…
一般使用者在動態時報上方就可以自己編輯,
如官網的說明:
https://www.facebook.com/help/190613671010922
這次接到的任務,是要在非FB網站讓FB用戶選擇、或上傳自己的圖片,
然後還要讓這張照片能夠做為自己FB的封面圖片
這應該就要使用他的API功能來做,不過FB似乎還沒有公佈更改封面的API,
敬拜咕狗大神之後,發現只要使用一個網址參數preview_cover,就可以達到一樣的效果:
這裡的“preview_cover”接的是使用者相簿裡的圖片ID
可以用Graph API Exploer來查詢自己的圖片ID,如下:
https://www.facebook.com/profile.php?preview_cover=圖片ID:
所以要設為封面之前,圖片必須先存在自己的相簿裡,這樣才能取得它的ID
練習
不管是上傳電腦裡的,或是選擇網路上的圖片,都要讓他傳到自己的FB相簿裡,產生圖片ID
從以下這個網址來練習看看吧:
http://demo.coder.com.tw/fbapp/changecover/web/
1. 選擇圖片後,將圖片的資訊帶到下一頁 do.php
2. 在do.php這一頁裡,我們要把前一頁選擇的圖片上傳到FB
$picURL="images/cover1.jpg"; //選擇的圖片
try {
$msg = array(
‘access_token’ => $access_token,
‘message’ => “上傳一張不錯的圖片\n". $webURL ,
‘source’ => ‘@’.realpath($picURL)
);
$uploadPhoto = $facebook->api(‘/me/photos’, ‘post’, $msg );
} catch (FacebookApiException $e) {
echo $e->getMessage(); //output any error
}
3. 若成功上傳圖片,$uploadPhoto["id"]即為該張圖片的ID了,再用api方法取得圖片的網址:
if($uploadPhoto){
try {
$photo = $facebook->api(‘/’.$uploadPhoto["id"], array(‘access_token’ => $access_token));
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
}
4. 得到的$photo["source"]就是剛才上傳圖片的網址,再讓它顯示在結果頁:
5. 秀出結果頁是讓使用者看的,我們之前已經取得圖片ID:$uploadPhoto["id"]
只要讓使用者連往自己的動態時報
例如點擊結果頁的「替換你的封面」按鈕,連往動態時報
網址後面接上參數 preview_cover=圖片ID
https://www.facebook.com/profile.php?preview_cover=XXXXXXXXXXXXXX
就可以進入封面圖片的編輯狀態,讓使用者同意將這張圖片設為封面:
寫完發現…其實這篇PHP做的事主要是上傳圖片到FB、取得圖片ID。
在使用者FB編輯封面圖片用的是網址傳參數的方式……orz
其實也算滿方便的一種作法啦…
參考資料
Graph API Explorer
https://developers.facebook.com/tools/explorer
Facebook Cover Photo API using PHP (stackoverflow)
http://stackoverflow.com/questions/10085202/facebook-cover-photo-api-using-php
Change Facebook Cover or Profile Pic with PHP
http://www.saaraan.com/2012/09/change-facebook-cover-or-profile-pic-with-php