2013-10-17 76 views
2

我試圖發送帖子到一個頁面的牆壁im管理員通過js sdk。我已經做到了,我可以爲自己(我的個人用戶)做到這一點,但我無法將其作爲「頁面」工作。張貼飼料js sdk頁面壁紙

<div id="fb-root"></div> 
    <script type="text/javascript"> 
     function SendToFacebook() 
     { 
     window.fbAsyncInit = function() { 
      // init the FB JS SDK 
      FB.init({ 
       appId: '**CORRECT ID**',      // App ID from the app dashboard 
       channelUrl: '**MYPAGE**/channel.html', // Channel file for x-domain comms 
       status: false,         // Check Facebook Login status 
       xfbml: true         // Look for social plugins on the page 
      }); 

      FB.ui(
       { 
        method: 'feed', 
        name: 'MyFeed', 
        link: '', 
        // picture: '', 
        caption: 'My caption', 
        description: 'test', 
        message: 'MESSAGE?', 
       }, 
       function (response) { 
        if (response && response.post_id) { 
         alert('Delat på facebook.'); 
        } else { 
         alert('Inte delat på facebook.'); 
        } 
       } 
      ); 
      // Additional initialization code such as adding Event Listeners goes here 
      }; 

     // Load the SDK asynchronously 
     (function (d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0]; 
      if (d.getElementById(id)) { return; } 
      js = d.createElement(s); js.id = id; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      fjs.parentNode.insertBefore(js, fjs); 
     } (document, 'script', 'facebook-jssdk')); 
     } 
    </script> 

這帖子我自己的用戶頁面,香港專業教育學院嘗試「到」參數,但它從我個人用戶帖子發送到該頁面。有沒有辦法通過登錄功能做到這一點? 裸心記住,即時通訊相當新的這樣的演示和例子是值得歡迎的。

+1

你必須使用一個[頁面訪問令牌(https://developers.facebook.com/docs/facebook-login/access-tokens /)。令牌是標識當前用戶(和權限)的標識。當您使用您的用戶訪問令牌時,該帖子將被張貼到您的牆上,因爲它是*您的*令牌。 – Lix

+0

你能給我一個如何做到這一點,也許參考的代碼示例? – Jimmy

+0

您需要的所有示例和參考資料都在我發表的評論中的鏈接中。 – Lix

回答

4

經過艱苦的日子工作,我得到了它的工作,如果有任何1感興趣的繼承人,我怎麼做。

<script type="text/javascript"> 

     function SendToFacebook() 
     { 
      window.fbAsyncInit = function() { 
       // init the FB JS SDK 
       FB.init({ 
        appId: '***',      // App ID from the app dashboard 
        channelUrl: '***', // Channel file for x-domain comms 
        status: false,         // Check Facebook Login status 
        xfbml: true         // Look for social plugins on the page 
       }); 


       FB.login(function (response) { 
        FB.api('/me/accounts', function (apiresponse) { 

         var data = { 
          message: "mymessage", 
          display: 'iframe', 
          caption: "caption", 
          name: "name", 
          description: "description", 
          to: **wallid**, 
          from: **wallid** 
         }; 

         FB.api('/**wallid**/feed', 'post', data, function() { 
          console.log(arguments); 
         }); 


        }); 

       }, { scope: 'manage_pages' }); 

      }; 
      // Load the SDK asynchronously 
      (function (d, s, id) { 
       var js, fjs = d.getElementsByTagName(s)[0]; 
       if (d.getElementById(id)) { return; } 
       js = d.createElement(s); js.id = id; 
       js.src = "//connect.facebook.net/en_US/all.js"; 
       fjs.parentNode.insertBefore(js, fjs); 
      } (document, 'script', 'facebook-jssdk')); 
     } 
     </script> 
+0

你救了我一些大頭痛。感謝@Jimmy發佈此信息 – Paullo

0

我發現這個解決方案,我試了一下,雖然我不知道是怎麼回事3年前,現在你需要附加您通過接收/我的頁面訪問令牌/佔調用(你也必須是管理員該網頁等),使工作液今天看起來是這樣的:

FB.api('/me/accounts', function (apiresponse) { 
       console.log(apiresponse); 
       var data = { 
        message: "mymessage", 
        //display: 'iframe', 
        caption: "caption", 
        picture: 'www.bla.com/image.jpg', 
        link: 'www.facebook.com', 
        name: "name", 
        description: "description", 
        to: **APP IP**, 
        from: **APP IP**, 
        access_token: apiresponse.data[0].access_token 
       }; 

       FB.api('/**APP IP**/feed', 'post', data, function() { 
        console.log(arguments); 
       }); 
      });