PHP更換FACEBOOK封面圖片

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

發表迴響