1

我正在尝试使用此代码发布到我朋友的提要,但它不起作用。我被卡住了,有什么帮助吗??

 $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->api("/".$sendTo ."/feed", 'post', $vars); 通过 $facebook->api("/me/feed", 'post', $vars); 当然,不用循环朋友,在我的时间线上发帖。我怎样才能把它贴在我的墙上??

4

4 回答 4

0

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

于 2012-05-23T06:52:37.580 回答
0

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

但是,不是对: 进行 API 调用/me/feed,而是替换me为朋友的用户 ID,所以它看起来像/12345/feed

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

于 2013-05-03T10:56:16.487 回答
0

您的代码有一些问题。首先,确保帖子的linkpicture参数是有效的 URL。否则 Facebook 会给您一条错误消息 ( (#100) link URL is not properly formatted)。此外,link必须转到您的应用程序的 Canvas 或站点 URL。

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

但是,我可以提醒您,您的应用程序违反了 Facebook 平台政策。Facebook 不允许在流中发布多个帖子(无论是您的还是朋友的),除非得到用户的明确许可。它还可以阻止普通朋友看到来自多个朋友的相同消息。

于 2012-05-23T09:28:58.783 回答
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"];
于 2012-05-23T06:58:24.027 回答