2012-05-23 115 views
1

我正在尝试使用此代码发布给我的朋友的提要,但它不起作用。我卡住了,有什么帮助?如何使用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-> API( “/".$ SENDTO。”/进料”, '后',$ VARS); by $ facebook-> api(“/ me/feed”,'post',$ vars);当然没有循环播放朋友,我的时间表上的帖子。我怎么能让它发布在我的墙上?

回答

0

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

+0

毫米有意义,所以你认为有没有解决方案? – user1395625

0

1日检查您是否获得了用户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"]; 
+0

但我有用户ID,如果我回显$ sendTo和$ sendToName,我看到我所有的朋友的名字和ID。 – user1395625

0

有几件事你的代码错误。首先,确保帖子的linkpicture参数是有效的网址。否则Facebook会给你一个错误信息((#100) link URL is not properly formatted)。此外,link必须转到您的应用程序的画布或网站URL。

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

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

+0

我的链接和图片参数是正确的,我只是在这里改变了他们的问题。所以你的意思是这段代码是正确的,并且应该能够一次发布在1个朋友墙上(没有循环的朋友)?但它并没有这样做! :( – user1395625

+0

尝试使用图形工具发布到朋友的墙上,它会给你一个它工作的帖子的ID或错误信息。它可以帮助你识别问题,Facebook也有限制使用stream_publish防止垃圾邮件传播。 –

相关问题