11

我在使用图形 API 时遇到了一个奇怪的问题,下面的代码用于向用户新闻提要添加带有附加照片缩略图的帖子(在“object_attachement”参数中引用)。

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

现在下面代码的结果。

    $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 是否发生了变化。

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

4

4 回答 4

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
);

添加

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

于 2012-12-21T08:00:53.170 回答
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);

你可以在这里找到更多

于 2012-12-16T01:08:59.393 回答
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)
于 2012-12-25T08:56:36.980 回答
2

您正在发布到提要。您应该改为发布到 LINK。

将图片的链接发布到链接提要,你应该没问题。

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

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

- - 之后 - -

嗯,链接选项并不令人满意。你得到一张图片的缩略图,你可以点击它来查看完整的图片,但它非常难看。我真的不认为那是你所追求的。

所以我做了更多的实验,并不断地遇到你提到的那个 CDN 错误。于是我google了一下,发现如下:

在 Stream Stories 中提供图像 2010 年 6 月 18 日下午 3:21

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

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

于 2012-12-22T20:14:31.147 回答