1

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

  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);
4

2 回答 2

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
    }
}
于 2012-08-01T18:52:13.033 回答
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 粉丝专页。

最后这件事是如何发生的。正如 Martin 先生所说,我们将需要 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++;

}


  ?>
于 2012-10-08T07:56:41.017 回答