【问题标题】:Post comment onto a webpage, using facebook graph api使用 facebook graph api 在网页上发表评论
【发布时间】:2015-03-30 06:30:25
【问题描述】:

关于 facebook graph api 的一个小问题。 我一直在用官方的Facebook Graph API PHP SDK

我还在我的网页上添加了 facebook social cmets 插件小部件。 是否可以使用 facebook 的 Graph api 在网页上发表评论?

用户将使用 facebook 登录到我的 Web 应用程序,然后他必须能够通过 API 在我的应用程序中的网页上发布 facebook 评论。因此,该小部件将显示所有直接在页面上发布的 cmets,以及通过 API 发布的所有 cmets。

到目前为止,我已经尝试过这个 AJAX 代码:

<?php 
$token = $facebook->getAccessToken(); 
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" 
type="text/javascript"></script>
<script type="text/javascript">
$.post('https://graph.facebook.com/comments/?ids=http://mywebsite.com/comments.php?id=123',{ name: 'John', message: 'Testing comments', 'method': 'POST', 'format': 'json', 'access_token': '<?php echo $token; ?>'},
function(data) {           
});
</script>

但这会返回一个 OAUTH 异常:

{
   "error": {
      "message": "An unknown error has occurred.",
      "type": "OAuthException",
      "code": 1
   }
}

我在设置登录网址时请求了足够的权限:

$loginUrl = $facebook->getLoginUrl(array(
               'scope' => 'email,publish_stream,publish_actions,read_stream,user_about_me,user_events,create_event'
            ));

注意: 我在我的页面上包含了 facebook 小部件,使用以下代码:

<div class="fb-comments" data-href="http://www.mywebsite.com/comments.php?
id=<?php echo $_GET['id']; ?>" data-width="370" data-num-posts="5"></div> 

脚本:

<div id="fb-root"></div>
<script>(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#xfbml=1&appId=xxxxxxxxxxxxxxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


  <div id='fb-root'></div>
    <script src='http://connect.facebook.net/en_US/all.js'></script>
    <!--<p><a onclick='postToFeed(); return false;'>Post to Feed</a></p>-->
    <p id='msg'></p>

    <script> 
      FB.init({appId: "xxxxxxxxxxxxxxx", status: true, cookie: true});

      function postToFeed() {

        // calling the API ...
        var obj = {
          method: 'feed',
          redirect_uri: 'http://www.mywebsite.com/comments.php?id=<?php echo $_GET['id']; ?>',
          link: 'https://developers.facebook.com/docs/reference/dialogs/',
          picture: 'http://fbrell.com/f8.jpg',
          name: 'Facebook Dialogs',
          caption: 'Reference Documentation',
          description: 'Using Dialogs to interact with users.'
        };

        function callback(response) {
          document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
        }
        FB.ui(obj, callback);
      }    
    </script>

【问题讨论】:

    标签: php facebook-graph-api


    【解决方案1】:

    这不是发布 cmets 的正确语法。至少缺少 postId: 这里你如何通过 API (php sdk) 调用它

    $facebook ->api('/'.$post_id.'/comments', 
     'post', 
       array(
          'message' => 'users comment',
       )
    );
    

    您不能使用 JQuery $.post 来生成 APi 调用。使用 JQuery 调用 PHP 脚本,其中包含 API 调用。

    【讨论】:

    • 我不确定 post_id 应该使用什么。是我网页的 url,有 facebook cmets 小部件吗?
    • postId = cmets所属帖子的Id。没有 API 不知道在哪里发表评论。小部件来自 Facebook?它是基于 iFrame 的还是基于 Javascript 的?是你自己写的吗?
    • 小部件不是来自 facebook。我已使用 iframe 代码手动将小部件包含在我的页面上。
    • 如何获得 cmets?通过 API 加载?你能在这里提供一些代码吗?我的意思是显示 cmets 你还需要 postIds 吗?如果没有关于小部件和其中代码的更多信息,就很难提供帮助。
    • 好的,我实际上并没有在我的页面上显示来自 facebook 帖子的 cmets。我刚刚通过为每个页面指定一个唯一的 url 在我的页面上设置了一个 cmets 小部件。但我现在明白,不可能通过 API 将 cmets 添加到我的网页上。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2013-06-23
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多