【问题标题】:Facebook share custom story on my timeline using javascript sdkFacebook 使用 javascript sdk 在我的时间轴上分享自定义故事
【发布时间】:2014-10-29 14:08:29
【问题描述】:

这是一个非常新手的问题,我无法找到解决方案,我花了很多时间阅读他们的官方文档,但这一切都是徒劳的,所以我作为最后的手段来到这里。
我想做什么
我想在我的时间线上发布我的自定义故事,

1)我创建了一个自定义故事
2)尝试通过共享对话框共享它[无效],并且也尝试了 api 调用。

<div id="fb-root"></div>

<!-- facebook code starts here -->

<script>
  function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);


  function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  }

  window.fbAsyncInit = function() {
  FB.init({
    appId      : xxxxx[correctly used app id],
    cookie     : true,  // enable cookies to allow the server to access 
    status     : true,           
    xfbml      : true,  // parse social plugins on this page
    version    : 'v2.0' // use version 2.0
  });



  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });




  FB.api(
          'me/objects/restaurant.restaurant',
          'post',
          {
            app_id: xxxxx[correctly used app id],
            type: "restaurant.restaurant",
            url: "http://samples.ogp.me/440002909390231",
            title: "Sample Restaurant",
           image:"https://static.ak.fbcdn.net/images/devsite/attachment_blank.png",
            description: "This place rocks",
            contact_info: "http://www.facebook.com",
            location: "-122.148283"
          },
          function(response) {
            // handle the response
          }
    );


  FB.api(
          'me/testxdev:eat',
          'post',
          {
            restaurant: "http://samples.ogp.me/440002909390231"
          },
          function(response) {
            // handle the response
          }
        );


  };//********END OF FUNCTION ENCLOSING INIT()***********

  // 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/sdk/debug.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));


</script>  

 <div class="fb-like" data-send="true" data-width="450" data-show-faces="true"></div>


<!--  End of facebook code-->

【问题讨论】:

    标签: javascript facebook facebook-graph-api facebook-javascript-sdk


    【解决方案1】:

    我能够解决我自己的问题,我也发布了解决方案,这样其他人就不会那么难了。

    <div id="fb-root"></div>
    <!-- facebook code starts here -->
    
    <script>
    
      function statusChangeCallback(response) {
    
    
        if (response.status === 'connected') {
    
    
    
         FB.api('/me', function(response) {
            console.log("here");
                console.log(JSON.stringify(response));
    });  
    
      FB.api(
             '/me/objects/restaurant.restaurant',
             'post',
             {
               app_id: "[your app id]",
               type: "restaurant.restaurant",
               url: "http://samples.ogp.me/440002909390231",
               title: "Sample Restaurant",
               image: "https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png",
               description: "This place rocks",
               contact_info: "http://www.facebook.com",
               location: "-122.148283"
             },
             function(response) {
               // handle the response[this helped a lot]
               console.log(JSON.stringify(response));
    
             }
            ); 
    
              FB.api(
                  '/me/testxdev:eat',
                  'post',
                  {
                restaurant: "http://samples.ogp.me/440002909390231"
                  },
                  function(response) {
                // handle the response
                  console.log("the action response "+response);
                   console.log(JSON.stringify(response));
    
                  }
               );
    
        } else if (response.status === 'not_authorized') {
          document.getElementById('status').innerHTML = 'Please log ' +
            'into this app.';
        } else {
          document.getElementById('status').innerHTML = 'Please log ' +
            'into Facebook.';
        }
      }
    
    
      function checkLoginState() {
        FB.getLoginStatus(function(response) {
          statusChangeCallback(response);
        });
      }
    
      window.fbAsyncInit = function() {
      FB.init({
        appId      : "[your app id]",
        cookie     : true,  
        status     : true,     
        xfbml      : true,  
        version    : 'v2.0' 
      });
    
      FB.getLoginStatus(function(response) {
         statusChangeCallback(response);   
      });
    
    
    
      };
    
      // 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/sdk/debug.js";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));
    
    
    </script>
    
    
    <fb:login-button scope="public_profile,email,publish_actions",
        auth_type: 'rerequest' onlogin="checkLoginState();">
    </fb:login-button>
    <div id="status"></div>
     <div class="fb-like" data-send="true" data-width="450" data-show-faces="true"></div>
    
    
    <!--  End of facebook code-->
    

    上面的代码工作正常[代码来自自定义创建的故事],主要问题是默认情况下分享帖子时 不会出现在时间线上[因为应用程序处于开发模式],因此查看帖子去查看最近的活动日志。它必须在那里可见。 如果您希望帖子出现在时间轴上,请将状态下的应用可见性和应用仪表板中的审核设置为是

    截至 2014 年,如果您想向用户发布任何内容[除了应用程序注册开发者],您需要 Facebook 许可,即需要提交应用程序以供批准请参考以下链接 https://developers.facebook.com/docs/facebook-login/permissions/v2.0

    您可以检查它是否位于概览部分的正下方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多