0

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

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

一切正常,但遗憾的是结果不是我想要的。而不是“完整”的形象,我只得到一个跛子:http: //i.imgur.com/2qINX.jpg

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

4

2 回答 2

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");
    
于 2012-12-22T20:00:51.907 回答
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']。

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

或者,查看我不久前写的这两篇文章,它们涵盖了相同的内容。

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

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

于 2012-12-22T20:02:26.150 回答