通过应用程序将图片(带标题)上传到Facebook页面

时间:2012-12-22 18:53:40

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

所以我想做以下事情:php脚本应该将带有标题的图片上传到facebook页面。

然后我用Google搜索了一下,发现了这个:Simple example to post to a Facebook fan page via PHP?

一切都很好,但遗憾的是结果不是我想要的。而不是“完整”的图像,我只得到一个残废:http://i.imgur.com/2qINX.jpg

你能救我吗?该脚本需要离线访问,我已经有了一个应用程序。我只需要它上传图片和标题,仅此而已。 在此之前,我通过Facebook为移动用户提供的电子邮件上传图片,但这不再令人满意。我的意思是,它不会那么难。但如果我不明白这一点,我将租用一个虚拟的Windows服务器并运行一个登录Facebook并发布图像的脚本。

2 个答案:

答案 0 :(得分:1)

您可以使用 -

将图片上传到您的页面
$image['file'] = PATH_TO_PICTURE;
$args = array( 'access_token' => PAGE_ACCESS_TOKEN, 'message' => '','no_story' => 0);
$args['image'] = '@' . $image['file'];
$target_url = "https://graph.facebook.com/ALBUM_ID/photos";

$ch = curl_init(); 
curl_setopt ($ch,CURLOPT_URL,$target_url); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_exec($ch);
curl_close ($ch);

<强> PAGE_ACCESS_TOKEN

  1. 获取网页/应用列表 -

    $facebook->api("/USER_ID/accounts"); 
    
  2. 获取页面的访问令牌 -

    $facebook->api("/PAGE_ID?fields=access_token");
    

答案 1 :(得分:1)

这会将图片加载到特定图库:

$newphotodata = array(
'access_token' => $fanPageAccessToken,
'message' => $message,
'no_story' => 1,
'aid' => $albumId,
'image' => '@' . $picturePath);
$uploadedphoto = $facebook->api('/' . $albumId . '/photos/', 'post', $newphotodata);

您也需要以下权限:

read_stream, manage_pages, publish_stream, photo_upload, user_photos, user_photo_video_tags

我不确定user_photos和user_photo_video_tags是否真的需要,所以如果你使用它就试试。

此外,在拨打电话之前,您需要以下一行:

$facebook->setFileUploadSupport(true);

你首先需要做两件事。

首先,您需要查询API以获取要发布到的任何页面的访问令牌。

您可以通过以下api调用来执行此操作:

$fanpages = $facebook->api('me/accounts?access_token='.$accessToken);

然后循环浏览$ fanpages ['data'],找到你想要的页面:

$fanPageAccessToken = $fanPage['access_token']

然后使用相应的相册ID进行上面给出的调用。

现在,如果您不知道所需的专辑ID,请查看以下内容:

$fan_albums = $facebook->api($fanPageId.'/albums/');

这将显示所有相册。目前的关键字段是['id']和['name']。

一旦你发了帖子,就没有证据。那么您应该做的是在链接Feed上发布照片的链接。如果您需要帮助,请询问,我将提供信息。

或者,看看我刚才写的这两篇文章,它们涵盖了相同的内容。

http://facebookanswers.co.uk/?p=262

http://facebookanswers.co.uk/?p=322