Facebook Graph API - Taggable Friends
有鑑於IKEA做了一個好玩的活動網站來IKEA睡一晚,其中含有邀請朋友並標記、分享到Facebook上,因此也做了一個範例來玩玩。
來IKEA睡一晚 - Taggable Friends的UI流程
-
選擇好友
-
分享並標記好友
-
在FB上看到分享的PO文
但這個功能是有限制的...
- 好友頭像大小受限(50*50(px))。如果想客製拉成大圖就會很模糊,但一般選擇朋友應該不會用到太大的圖啦XD
- 此權限必須要經過Reivew才能供非開發者使用 -> 必須提交審核APP,審核需要相關資訊和時間。
- 此功能只有2.0以上才有,如果網站是用1.0的話就無法使用。附註:轉換成2.0,此時取得的使用者ID是Application-Specific IDs。
- 不能使用UI分享,必須使用Graph API分享,因為UI分享無法使用Message欄位,不能對使用的發佈的訊息做加工。附註:Graph API分享的權重較低。
- 必須要有 "place" 欄位,否則不能分享PO文,會出現錯誤訊息 "(#100) Cannot specify user tags without a place tag"。並且place欄位要放ID而非一般的字串,必須是粉絲頁ID,不可為個人ID。
自己做的簡單範例Demo
主要程式碼解說
//取得朋友清單
FB.api('/me/taggable_friends', function(res) {
if (res && !res.error) {
var friendsData = res.data;
$.each(friendsData, function(index, value){
//取得分享ID
//Append到畫面上供使用者勾選
});
}
});
//按下分享按鈕
dShare.click(function(e){
e.preventDefault();
//將所有的朋友小區塊蒐集起來
var dFriends = dFriendList.find('.friend');
//把選擇到的朋友ID丟入此Array
var friendArr = [];
//檢查每一個朋友小區塊是否被勾選,如果被勾選就將此朋友的ID放到Array裡面
dFriends.each(function(index, value){
var dObj = $(value).find('.checkbox');
if(dObj.attr('checked')){
friendArr.push(dObj.data('id'));
}
});
//將被勾選的朋友陣列轉成逗點分隔的字串
friendString = friendArr.join(',');
FB.login(function(){
var params = {};
params['name'] = 'Facebook Graph API & Demo Example - Taggable Friends';
params['caption'] = 'Facebook Graph API & Demo Example - Taggable Friends';
params['description'] = 'Taggable Friends';
params['message'] = 'Graph API是Facebook所推出的一種技術標準,它的核心概念是「物件與連結」。為什麼稱為「Graph API」呢?因為整個Facebook就是透過這些物件與連結建立而成的Social Graph。Facebook所提供存取的介面,就稱為「Graph API」。';
params['link'] = 'http://bit.ly/1qtutRh';
params['picture'] = 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-XaDEacYKexq9PYtDZyv6WwFHDTezYnBxceoiBjWuFkJYqK6dJnY6C7ZcZH7MbcoaBx38tTwEbgXl-NqTJ6B0GMuCEyu9yIOMiIwo84Piawidn-qiPzqA95rfTobSWCwSWjmC2g/w764-h509-no/twenty_800.jpg';
//被Tag的朋友字串
params['tags'] = friendString;
//一定要有地點欄位,否則會出錯
params['place'] = '647158178704039';//https://www.facebook.com/pages/Search-Engine-Optimization-Social-Media/647158178704039
//PO文,記得要取得publish_actions權限
FB.api('/me/feed', 'post', params, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
}, {scope: 'publish_actions'});
});
結果
因為部落格搬家了,因此在新落格也放了一份,未來若有增刪會在這裡更新-Facebook Graph API - Taggable Friends。
留言