Facebook应用程序 - 发布照片

时间:2012-09-13 06:10:29

标签: facebook facebook-graph-api facebook-php-sdk posting

在我的应用程序中,它将创建的照片发布到用户的“照片”。 但是只要用户使用应用程序就可以创建照片,并且可以在相册上发布。

没关系?或者我应该删除旧照片并上传为新照片?或限制用户再次使用应用程序?或者其他什么我不跟随?

1 个答案:

答案 0 :(得分:0)

可以吗? ,我不喜欢这样做,您很快就会被标记为垃圾邮件。

你应该删除旧照片并上传为新照片吗? ,这需要更多权限,还有其他选择。

您是否应该限制用户再次使用应用程序?

我应该遵循的其他事情?

我的其中一个应用程序以类似的方式设置,但这是我最终做的事情......

我将每个用户存储在我的数据库表'users'中,其中一列用于Facebook id('fbid'),另一列用于该用户最后发布的时间('lastpost')。在我的数据库中,'lastpost'的默认值是0

我在所有Facebook应用程序中使用此部分来跟踪/插入新用户:

$seeif = mysql_num_rows(mysql_query("SELECT id FROM users WHERE fbid='$user' LIMIT 1"));

if ( $seeif == "1" ) {
// already exists
} else {
// insert new user
mysql_query("INSERT INTO users (fbid) VALUES('$user' ) ") 
or die(mysql_error()); 
}

此部分将查询该表以查看其“lastpost”的时间(如果尚未发布,则会返回默认值为0的表格:

$adesult = mysql_query("SELECT lastpost FROM users WHERE fbid='$user' LIMIT 1") 
or die(mysql_error());  
while($ardw = mysql_fetch_array( $adesult )) {
$alast = $ardw['lastpost'];

这是我决定是否要发布的地方,如果是,请使用当前用户的“lastpost”的新值更新数据库。

注意:我目前设定的发布频率不会超过每5分钟(300秒)更改第一行以符合您的规格。

$mathtime = time() - 300;

if ( $alast > $mathtime ) {
// do nothing, user has posted in the past 5min
} else {
// post
$dothepost=1;
$currenttime = time();
mysql_query("UPDATE users SET lastpost='$currenttime' WHERE fbid='$user' LIMIT 1") 
or die(mysql_error());
}

最后这里是图片帖子的代码:

if ( $dothepost == "1" ) {

if ($user) {
      try {
$path_to_image = "/home/path/to/your/image/goes/here.jpg";
$args = array(
  'message' => 'Hello world!',
  'image'   => '@' . realpath($path_to_image),
);

$data = $facebook->api('/me/photos', 'post', $args);

      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
}

} else {
// noth
}

根据您的问题,您的页面每次显示/发布相同的图像或是否为动态并显示/发布不同的图像并不是很清楚。如果您每次都显示相同的图像:

更改:

if ( $dothepost == "1" ) {

if ( $alast == "0" ) {

否则,每次访问该页面时,您最终都会发布一张完整相同图像的相册(只要每次访问时间为5分钟)

希望这有助于某人