如何使用php sdk在朋友的墙上发帖?

时间:2012-05-23 06:44:59

标签: facebook facebook-php-sdk

我正在尝试使用此代码发布给朋友的供稿,但它无效。我被卡住,任何帮助?

 $app_url ="http://localhost.local/PMS/facebook/PostWithPHP.php";

 $facebook = new Facebook(array(
'appId'  => 'APPID',
'secret' => 'APPSECRET',
'cookie' => true,
));


  // Get User ID
$user = $facebook->getUser();

if ($user) {

$user_friends = $facebook->api('/me/friends');
sort($user_friends['data']);

try {
// Proceed knowing you have a logged in user who's authenticated.
$access_token = $facebook->getAccessToken();
$vars = array(
     'message' => 'My Message',
     'name' => 'title',
     'caption' => 'Caption',
     'link' => 'Link',
     'description' => 'Description',
     'picture' => 'image'
);

foreach($user_friends['data'] as $f){
        $sendTo = $f['id'];
        $sendToName = $f['name'];

        $result = $facebook->api("/".$sendTo ."/feed", 'post', $vars);
    }
    } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
   }
  }

 // Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=> $app_url));
  echo "<script type='text/javascript'>";
  echo     "top.location.href = '{$loginUrl}';";
  echo "</script>";
}

另一个问题是使用此代码,但更换了$ facebook-&gt; api(“/".$ sendTo。”/ feed“,”post“,$ vars);通过$ facebook-&gt; api(“/ me / feed”,“post”,$ vars);当然没有循环朋友,我的时间轴上的帖子。我怎么能把它贴在我的墙上?

4 个答案:

答案 0 :(得分:0)

我想对于时间轴的帖子,你需要一个来自用户的accessToken来发布内容。在您的情况下,您只拥有注册用户的accessToken,而不是他的朋友。这是我认为FB的限制。

答案 1 :(得分:0)

首先检查你获得用户ID(放置回音和检查),如果没有尝试这个...我想这会帮助你兄弟

 $token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . $app_id ."&client_secret=" . $app_secret .
   "&grant_type=client_credentials";

 $access_token = file_get_contents($token_url);

  $signed_request = $_REQUEST["signed_request"]; 
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
  $user_id = $data["user_id"];

答案 2 :(得分:0)

您的代码存在一些问题。首先,请确保帖子的linkpicture参数是有效的网址。否则Facebook会给你一个错误信息((#100) link URL is not properly formatted)。此外,link必须转到您应用的Canvas或网站网址。

这应该可以解决发布到朋友家的问题。

但是,我可以提醒您,您的申请违反了Facebook平台政策。除非得到用户的明确许可,否则Facebook不允许向该流发送多个帖子(无论是您的还是朋友)。它还可以阻止普通朋友看到来自多个朋友的同一信息。

答案 3 :(得分:0)

您可以按照此处的教程进行操作: https://www.webniraj.com/2012/11/22/facebook-api-posting-a-status-update/

但是,不是对/me/feed进行API调用,而是将me替换为朋友的用户ID,因此看起来像/12345/feed

请注意,Facebook现已禁止通过API向朋友的墙发布信息。相反,您应该在操作中标记用户或使用请求API。