使用 JavaScript SDK 發佈訊息到塗鴉牆

 

說明文件 JavaScript SDK

 

載入 Facebook API

var __fbAppId = 'YOUR_APP_ID';

window.fbAsyncInit = function () {
    FB.init({ appId: __fbAppId, status: true, cookie: true, xfbml: true, oauth: true });

    //檢查登入狀態
    FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
            //已登入且和app連結
            var uid = response.authResponse.accessToken;
            var accessToken = response.authResponse.accessToken;

            init();
        } else if (response.status === 'not_authorized') {
            //已登入但未與app連結

            login();
        } else {
            //未登入
            document.getElementById('login_status').innerHTML = "Login";
        }
    });
};

$(window).load(function () {
    (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/zh_TW/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
});

 

如果已經登入但還沒允許APP存取的話,可以使用 FB.login() 來請使用者允許存取

其中存取權限要加上 publish_stream,才可以貼文或刪文

function login() {
    FB.login(function(response) {
        if (response.authResponse) {
            init();
        }
    }, { scope: 'email,publish_stream,user_about_me,user_likes,user_birthday,user_status' });
}

 

登入後可以抓取FB帳號資料,可以參考 Graph API

FB.api('/me', function(response) {
    $('#info').html("<div><img src='https://graph.facebook.com/" + response.id + "/picture/' /></div><div>" + response.name + "</div>");

可以查閱說明文件,基本上個人資料可以使用的參數有

{
   "name": "Facebook Platform",
   "type": "page",
   "website": "http://developers.facebook.com",
   "username": "platform",
   "founded": "May 2007",
   "company_overview": "Facebook Platform enables anyone to build...",
   "mission": "To make the web more open and social.",
   "products": "Facebook Application Programming Interface (API)...",
   "likes": 449921,
   "id": 19292868552,
   "category": "Technology"
}

 

發佈訊息到塗鴉牆

function postToWall(id) {
    var args = {
        method: 'feed',
        name: 'Name : Facebook App',
        message: 'Message : Facebook Post Test',
        link: 'https://developers.facebook.com/docs/reference/dialogs/',
        picture: 'http://www.fbrell.com/f8.jpg',
        caption: 'Caption : Facebook Post Test',
        description: 'Description : Facebook Post Test'
    };
    FB.api('/' + id + '/feed', 'post', args, onPostToWallCompleted);
    document.getElementById('msg').innerHTML = "waiting...";
}

function onPostToWallCompleted(response) {
    if (!response || response.error) {
        document.getElementById('msg').innerHTML = 'Error occured: ' + response.error.message;
        $('#msg').slideDown();
    } else {
        document.getElementById('msg').innerHTML = '發佈成功,訊息ID:' + response.id + "。刪除此訊息";
        $('#msg').slideDown();
    }
}

 

發佈到塗鴉牆後如下圖

如果使用 FB.api(‘/me/feed’, ‘post’, args, onPostToWallCompleted); 會發佈到已登入的帳號

例如自己 如果使用 FB.api(‘/’ + userid + ‘/feed’, ‘post’, args, onPostToWallCompleted);

userid 是朋友的 FB ID 的話 只要朋友的塗鴉牆有開放讓朋友貼文,就可以將訊息貼到朋友的塗鴉牆上

 

移除貼文

function deleteWall(id) {
    FB.api(id, 'delete', function (response) {
        if (!response || response.error) {
            document.getElementById('msg').innerHTML = '刪除訊息ID: ' + id + ' 時發生錯誤。' + response.error.message;
            $('#msg').slideDown();
        } else {
            document.getElementById('msg').innerHTML = '訊息ID: ' + id + ' 已刪除';
            $('#msg').slideDown();
        }
    });
}

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *