【问题标题】:Uploading a Picture (with Title) to Facebook Page through App通过 App 将图片(带标题)上传到 Facebook 页面
【发布时间】:2012-12-09 22:42:38
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您需要将图片上传到页面或在页面上发布?标题说:上传,截图表明你正在页面上发帖。
  • @Sahil 在页面上发布,抱歉。我是该页面的所有者,因此我想上传一张新图片供所有粉丝查看。

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


【解决方案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

【讨论】:

【解决方案2】:

您可以将图片上传到您的页面使用-

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

【讨论】:

  • 如何将相册设置为页面的“默认/系统相册”?我说的是默认上传图片的“相册”(根本不选择任何相册时)。
  • 自己想出了解决方案。只需输入页面 ID 作为专辑 ID。谢谢,我在您的帮助下成功了!
  • 我还有一个问题。该应用程序现在抛出“验证访问令牌时出错:会话已在 unix 时间过期”错误。如何获得永久访问令牌?
  • 查看此用户的扩展令牌:facebook.stackoverflow.com/questions/13809431/…
  • 使用此扩展令牌,然后对 PAGE_ACCESS_TOKEN 重复上述过程,这将为您提供不朽的 page_access_token,除非应用程序的密钥被刷新:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2014-03-03
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多