图谱API新的Feed帖子对象 - 附件未显示

时间:2012-12-15 23:22:55

标签: php facebook facebook-graph-api facebook-php-sdk

我的图API有一个奇怪的问题,下面的代码用于为我添加一个帖子到用户新闻Feed,附带照片的缩略图(在'object_attachement'参数中引用)。

但是现在帖子按预期创建,但缩略图为空。我正在使用的photo_id存在于用户的照片集中。

Results of below code now.

    $photo_ID = "3415678920211";//Valid Facebook Photo ID...        
    $facebook = new Facebook($config);

    $attachment =  array(
            'access_token' => $user_token,
            'message' => "Test Message",
            'caption' => "THis is a Caption",
            'name' => "Test Name",
            'description' => "This is a description",
            'link' => 'http://url.com/',
            'object_attachment' => $photo_id,
    );

    $response = $facebook->api("/".$userID."/feed/", 'POST', $attachment);

我做错了吗?我确信这确实有用,并且想知道我下面的API是否发生了变化。

[更新] 我注意到,当我指定链接和放大器时,这似乎发生了。 object_attachment在同一个POST中。如果我从上面删除了链接参数,那么我会得到一个稍微好一点的更新,但这并不是很好,因为我希望这篇文章存在的主要原因是添加链接。

4 个答案:

答案 0 :(得分:4)

我假设用户授予了user_photos / friends_photos的权限。既然你有photo_id,你可以试试这个。

$pic = $facebook->api("/PHOTO_ID");
$pic_url = $pic->source;

$attachment =  array(
    'access_token' => USER_ACCESS_TOKEN,
    'message'      => "...",
    'caption'      => "...",
    'name'         => "...",
    'description'  => "...",
    'link'         => URL,
    'picture'      => $pic_url
);

<强> ADDED

您需要将图像存储在本地服务器本地的某个位置。由于这个article

答案 1 :(得分:3)

我认为'object_attachment'=>$photo_id将不再适用。 您应该将其更改为'picture'=>$photo_url

$photo_Url = "link to your photo";//Valid Facebook Photo ID...        
$facebook = new Facebook($config);

$attachment =  array(
        'access_token' => $user_token,
        'message' => "Test Message",
        'caption' => "THis is a Caption",
        'name' => "Test Name",
        'description' => "This is a description",
        'link' => 'http://url.com/',
        'picture' => $photo_Url,
);

$response = $facebook->api("/".$userID."/feed/", 'POST', $attachment);

您可以找到更多Here

答案 2 :(得分:3)

您必须在您的应用上获得pubish_stream权限,然后使用curl尝试: -

$attachment =  array(
        'access_token' => $access_token,
        'message' => 'i m success to using graph api for post wall',
        'name' => 'Wall Post using graph api',
        'link' => 'www.mysite.com',
        'description' => 'Using the Graph API, any Facebook users Wall feed may be accessed by using this URL:',
        'picture'=>'http://example.com/images/noimage.png'
 );
$url = "https://graph.facebook.com/$facebook_id/feed";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);
print_r($result)

答案 3 :(得分:2)

您要发布到Feed。你应该发帖到LINK。

将图片链接发布到链接Feed,您应该没问题。

https://developers.facebook.com/docs/reference/api/link/

我将在勾选中发布一个例子。

----后来----

嗯,链接选项不太令人满意。你得到了图片的缩略图,你可以点击它来查看完整的图片,但它非常难看。我真的不认为你就是这样。

所以我做了一些实验,并不断遇到你提到的CDN错误。所以我用Google搜索并发现了以下内容:

在溪流故事中提供图像 2010年6月18日下午3:21

我们不再允许流故事包含fbcdn.net域上托管的图像。与这些URL相关联的图像并不总是针对流故事进行优化,偶尔会导致错误,从而导致糟糕的用户体验。确保您的流附件不使用此域引用图像。您应该在本地托管图像。

根据Facebook的说法,你拥有它,你就不能再做你想做的事了。