需要通过他们授权的Facebook应用程序在所有用户时间线上发布Feed

时间:2012-08-01 17:41:29

标签: php facebook facebook-graph-api

您好我正在使用此代码通过在$ gg_fbid中提供ID来将Feed发送给特定用户。 有什么方法可以通过Facebook应用程序和访问令牌向所有使用PHP SDK中的Facebook应用程序的用户发送Feed。 是的,这就是我想要的,是可能的还是我应该建立一个单独的数据库来存储他们的身份

  require_once("fb/facebook.php");

  $gg_fbid='100004012849319';

    $facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
));


  $attachment = array
 (
 'access_token'=>$facebook->getAccessToken(),
 'message' => 'This Page is awesome.',
 'name' => 'Must Like It',
 'caption' => 'Dailyjokes',
 'link' => 'http://facebook.com/wtfdailyjokes/',
 'description' => 'Awesome Picture',
 'picture' => 'https://www.facebook.com/photo.php?fbid=264680606974256&set=a.206648236110827.41772.206637039445280&type=1&relevant_count=1'
 );
 $result = $facebook->api($gg_fbid.'/feed/','post',$attachment);

2 个答案:

答案 0 :(得分:1)

如果您拥有访问令牌数据库,则可以检索它们并对其进行迭代,以便在应用用户的墙上发布。

<?php
// instantiate Facebook SDK with your app's credentials
// do database query; fetch access tokens and store in an array called $access_tokens;

foreach ($access_tokens as $access_token) {
    try {
        $facebook->api('/me/feed', array(
            'access_token' => $access_token,
            'message' => 'This Page is awesome.',
            // and the rest of your details
        ));
    }
    catch (FacebookApiException $e) {
        // an error occurred
    }
}

答案 1 :(得分:1)

没有办法直接发布到用户墙上使用Facebook应用程序关于任何事件或其他东西,这就是为什么要回答我自己的问题。 Facebook权限publish_stream是必要的。 /

您需要在使用您的应用程序时创建用户数据库,就像我的代码

一样
        $facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxx',
));
$args = array(
    'message'   => 'Your Message to user Wall',
    'link'      => 'http://apps.facebook.com/lxxxxxxxx',
    'caption'   => ' Use this Awesome application or Like this Page.',
    'picture'      => 'http://xxxxx.png',



);
$post_id = $facebook->api("/me/feed", "post", $args);


  define('db_user','username);
  define('db_password','password');
  define('db_host','localhost');
  define('db_name','database name');

  // Connect to MySQL
  $dbc = @mysql_connect (db_host, db_user, db_password) OR die ('Could not connect to  MySQL: ' . mysql_error() );
    // Select the correct database
   mysql_select_db (db_name) OR die ('Could not select the database: ' . mysql_error() );


  $me = $facebook->api('/me'); 

        $dbcheck = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND     oauth_uid = ". $me['id']);  
 $dbr = mysql_fetch_array($dbcheck);  

if(empty($dbr)){ 

  $db=mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$me['id']}, '{$me['name']}')  ");

}

请发布我的原始代码,详细告诉您。

当人们首次打开你的应用程序时,这是代码,这个$ args被发布到用户墙,id和用户名被存储到数据库中。

将来,如果你想发布任何你想要使用你的应用程序并且还被授予许可的用户墙。你可以做推广网站或Facebook粉丝页。

最后这是怎么发生的。正如马丁先生所说,我们将需要为10个用户提供10个访问令牌,但如果您从应用程序发布的内容不正确,则应用程序令牌一次用于在所有用户的墙上发布,因此使用单个访问令牌的应用程序,您可以发布如果您的应用具有此功能,则为百万用户那么如何使用此链接获取应用程序的访问令牌

https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=xxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxxxxxx

之后获取数组中的所有ID并执行相同的代码以使用for循环在所有用户墙上发布,或者无论如何我仍然提供我使用的代码。

<?php 

 require_once("fb/facebook.php");

    $facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxx',
));


$x=array("100001944919003","100000968648478","100001672538252","100003924282886");

$y=0;


while($y<=3){

     $posting_fbid=$x[$y];

     $attachment = array
 (
 'access_token'=>'access token from the url from the graph api',
 'message' => 'This Page is awesome.',
 'name' => 'DailyJokes-Must Like It',
 'caption' => 'Dailyjokes',
 'link' => 'http://facebook.com/wtfdailyjokes/',
 'description' => 'Awesome Picture',
 'scope' => 'publish_stream',
 'picture' => 'https://www.facebook.com/photo.php?fbid=264680606974256&set=a.206648236110827.41772.206637039445280&type=1&relevant_count=1'
 );

  $result = $facebook->api($posting_fbid.'/feed/','post',$attachment);

    echo 'successful for id '.$posting_fbid.'<br>';

    $y++;

}


  ?>