如何使用我的OG操作找出谁发布了帖子

时间:2012-10-12 15:09:14

标签: facebook facebook-graph-api publish

希望有人能指出我正确的方向。

我有一个开放的图表操作,该操作最终已被批准,现在我的应用程序处于活动状态。有没有办法跟踪谁在我的应用程序中使用我的OG操作发布帖子?

以下是我用于操作的代码:

<script type="text/javascript">
  function postEndorse()
  {
      FB.api(
        '/me/namespace:endorse',
        'post',
        { photo: '<?php the_permalink(); ?>' },
        function(response) {
           if (!response || response.error) {
              alert('Error Occurred' + response + " " + response.error);
           } else {
              alert('Thank you!');
           }
        });
  }
  </script>

我在人们登录时请求publish_actions权限。

由于

2 个答案:

答案 0 :(得分:1)

上面的JavaScript代码中的响应具有操作的ID。

{
  id: “{action-instance-id}”
}

您需要通过数据库或其他方式存储您的操作。一旦你有了,你可以打电话

/action-instance-id?fields=from.fields(id)

会给出回复,例如

{
  "from": {
    "id": "{user-id}"
  }, 
  "id": "{action-instance-id}"
}

有很多方法可以存储这些数据,其中一种方法是AJAX到PHP / MySQL 我建议阅读它。 以下内容尚未经过测试,只是介绍了如何发送数据。将其视为伪代码

将jQuery添加到<head>

<script src="jquery.js"></script>

发送用户的id,例如

<script type="text/javascript">
  function postEndorse()
  {
      FB.api(
        '/me/namespace:endorse',
        'post',
        { photo: '<?php the_permalink(); ?>' },
        function(response) {
           if (!response || response.error) {
              alert('Error Occurred' + response + " " + response.error);
           } else {
              FB.api(
                response.id + "?fields=from.fields(id)",
                 function(resp) {
                     if (!resp || resp.error) {
                        alert('Error Occurred' + resp + " " + resp.error);
                      } else {
                        $.ajax({
                           type: "POST",
                           url: "fbdata.php",
                           data: { id: resp.from.id, actionid: resp.id }
                        }).done(function( msg ) {
                           alert( "Data Saved: " + msg );
                        });
                     }
              });
           }
        });
  }
  </script>

然后在fbdata.php中找到类似

的内容
<?php

include("database.inc.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database"); 

$id = mysql_real_escape_string($_POST['id']);
$actionid = mysql_real_escape_string($_POST['actionid']);

$database_entry = "INSERT INTO Actions (Id, Action) VALUES ('$id', '$actionid') ;
mysql_query($database_ntry) or die(mysql_error());


mysql_close();
?>

您应该阅读的参考资料

答案 1 :(得分:0)

如果你改变怎么办? /me/namespace:endorse/users facebook id/namespace:endorse然后您可以存储此人的Facebook ID,然后使用该ID进行追踪。