Facebook - 如何使用javascript sdk发布到公司?

时间:2012-04-11 15:45:33

标签: facebook integration

我是facebook新发布的帖子,但在使用用户帐户离线发布但无法使用公司页面离线发布时取得了一些成功。

我通过自己的个人脸书帐户创建了自己的“Facebook App”,名为“Nicks Poster App”。我已经为我的个人页面和公司页面授予了三个权限(offline_access,read_stream,publish_stream)。 我通过对每个帐户执行以下步骤来完成此操作...

Creating the app...
1.       Login to facebook with the account you want linked to the app
2.       Follow this link http://www.facebook.com/developers/apps.php#!/developers/createapp.php
3.       Create your app and take a note of you App Id and your App secret Id.

Giving the correct rights to the app and getting the access_token..
Method 1:
1.       Get the account in question to login to facebook
2.       However you like, direct the user to this link (replacing <App-Id> with the App Id of the created app) https://graph.facebook.com/oauth/authorize?client_id=<App-Id>&scope=offline_access,read_stream&redirect_uri=http://www.facebook.com/connect/login_success.html
3.       Take a note of the result of the “code” querystring.
4.       Goto this url (replace “<APP-ID>” with you appId and “<APP-SECRET>” with your apps secret id and “<code>” with the copied code)
https://graph.facebook.com/oauth/access_token?client_id=<APP-ID>&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=<APP-SECRET>&code=<code>
5.       Copy what you see, minus the expires querystring.  That is your access_token.

在我拥有两个帐户的访问令牌后,我使用此代码进行发布。

<!-- FACEBOOK -->        
<div id="fb-root"></div>
<script>
    (function () {
        var e = document.createElement('script');
        // replacing with an older version until FB fixes the cancel-login bug
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        //e.src = 'scripts/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    } ());
</script>
<!-- END-OF-FACEBOOK -->
<script>
    //initialise
    window.fbAsyncInit = function () {
        FB.init({
            appId: '351023398277068',
            status: true, // check login status
            cookie: true, // enable cookies to allow the server to access the session
            xfbml: true, // parse XFBML
            oauth: true // Enable oauth authentication
        });
    };
    function sendPost(inMessage) {
        var opts = {
            message: inMessage,
            access_token: '<SAVED-TOKEN>'
        };

        FB.api('/me/feed', 'post', opts, function (response) {
            if (!response || response.error) {
                alert('Posting error occured');
            }
            else {
                alert('Success - Post ID: ' + response.id);
            }
        });
    }

</script>

当使用参数'Test post'执行“sendPost”命令时,它将适用于我的个人帐户(假设我将access_token置于适当的位置)。这不适用于我的公司页面,我不知道为什么(我确实把我的acess_token放在了适当位置)。

Facebok也没有很好地记录这一点并且很难取得进展,是否有人理解为什么这对公司页面不起作用?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以设置“到”参数以定位您要发布到的页面,“如果您希望将页面作为页面发布到您的页面作为应用程序,则需要管理页面权限。

<div id="msg"></div>
<script>
// uid is the id of the page or user you wish to post to.
      function feedthis2(uid) {

        // calling the API ...
        var obj = {
        method: 'feed',
        to: ''+uid+''    
        };

        function callback(response) {
          document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
        }

        FB.ui(obj, callback);
      }
    feedthis2('AnotherFeed'); // to http://facebook.com/anotherfeed
    //feedthis2('135669679827333');
</script>