我正在尝试使用此代码发布给朋友的供稿,但它无效。我被卡住,任何帮助?
$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);当然没有循环朋友,我的时间轴上的帖子。我怎么能把它贴在我的墙上?
答案 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)
您的代码存在一些问题。首先,请确保帖子的link
和picture
参数是有效的网址。否则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。