Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用API将图像上传到facebook粉丝页面_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php 使用API将图像上传到facebook粉丝页面

Php 使用API将图像上传到facebook粉丝页面,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我正试图通过我的应用程序将一张带有Facebook Graph API的图片上传到我粉丝页面的相册中。虽然我提供了albumID作为上传图像的参数,但它上传到我个人档案中名为APPLICATION\u NAME Photos的相册中。粉丝页面的相册保持为空。我也尝试过发送我的粉丝页面的pageID而不是albumID,但结果是一样的。我用于上传的代码是: $fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array(

我正试图通过我的应用程序将一张带有Facebook Graph API的图片上传到我粉丝页面的相册中。虽然我提供了albumID作为上传图像的参数,但它上传到我个人档案中名为APPLICATION\u NAME Photos的相册中。粉丝页面的相册保持为空。我也尝试过发送我的粉丝页面的pageID而不是albumID,但结果是一样的。我用于上传的代码是:

$fb_pfoto = $facebook->api('/' . $albumID . '/photos','POST', array(
       'access_token' => $session['access_token'],
       'message'      => 'Caption',
       'source'       => '@' . realpath( '/path/to/image.jpg' )
    ));

请告诉我如何将图像上传到粉丝页面而不是我自己的个人资料相册。

不知道这是否有帮助,但您可能需要请求
管理页面
扩展权限,然后使用返回的页面访问令牌发布图片。您可以简要阅读有关此过程的内容

然后,您可以使用页面访问令牌尝试以下链接以发布照片:

/me/photos
/<page_id>/photos
/<album_id>/photos
/me/photos
//照片
//照片

以下是在Facebook粉丝页面上传照片的脚本:

<html>
<head>
<title>WebSpeaks.in | Upload images to Facebook</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
require_once 'library/facebook.php';
$facebook = new Facebook(array(
 'appId'  => $app_id,,
 'secret' => $app_secret,
 'fileUpload' => true
));


//It can be found at https://developers.facebook.com/tools/access_token/
$access_token = '<Your access token>';

$params = array('access_token' => $access_token);

//The id of the fanpage
$fanpage = '330299184793';

//The id of the album
$album_id ='10150418901414794';

//Replace arvind07 with your Facebook ID
$accounts = $facebook->api('/arvind07/accounts', 'GET', $params);

foreach($accounts['data'] as $account) {
 if( $account['id'] == $fanpage || $account['name'] == $fanpage ){
  $fanpage_token = $account['access_token'];
 }
}


$valid_files = array('image/jpeg', 'image/png', 'image/gif');

if(isset($_FILES) && !empty($_FILES)){
 if( !in_array($_FILES['pic']['type'], $valid_files ) ){
  echo 'Only jpg, png and gif image types are supported!';
 }else{
  #Upload photo here
  $img = realpath($_FILES["pic"]["tmp_name"]);

  $args = array(
   'message' => 'This photo was uploaded via WebSpeaks.in',
   'image' => '@' . $img,
   'aid' => $album_id,
   'no_story' => 1,
   'access_token' => $fanpage_token
  );

  $photo = $facebook->api($album_id . '/photos', 'post', $args);
  if( is_array( $photo ) && !empty( $photo['id'] ) ){
   echo '<p><a target="_blank" href="http://www.facebook.com/photo.php?fbid='.$photo['id'].'">Click here to watch this photo on Facebook.</a></p>';
  }
 }
}

?>
 <!-- Form for uploading the photo -->
 <div class="main">
  <p>Select a photo to upload on Facebook Fan Page</p>
  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
  <p>Select the image: <input type="file" name="pic" /></p>
  <p><input class="post_but" type="submit" value="Upload to my album" /></p>
  </form>
 </div>
</body>
</html>

webpeaks.in |将图像上传到Facebook
选择要上传到Facebook粉丝页面的照片


我最好的猜测是两种可能性之一:

  • 您的应用程序没有上载到该相册的权限。如果您使用pages access令牌请求/me/albums,它将列出与该页面关联的相册。是每个相册的can_upload字段,该字段为true或false(特定于您使用的访问令牌)

  • 您使用的是与您的个人帐户关联的访问令牌,而不是相册所属的页面。以下是有关如何作为页面而不是页面所有者进行身份验证的一些信息:


    • 我遇到了同样的难题,当我尝试将照片共享到页面时,我将其作为用户而不是页面发布。当我尝试将其发布到相册中时,照片将发布在我的个人资料中。 但多亏了我才解决了这个问题 正如弗里曼所说, 您必须首先获得“管理页面”权限 然后获取前面提到的页面访问令牌 然后在应用程序或网站中使用此令牌,而不是用户访问令牌 最后,将照片张贴在“我/照片”页面上
      或者在页面的特定相册中发布,请使用“{album id}/photos”

      非常感谢您的回答。从我从你们的链接上读到的内容来看,这个权限允许我访问用户的粉丝页面。我需要实现的是将内容上传到一个由我管理的单一粉丝页面。@serg brother你能给我举个例子吗。如何在客户facebook公司页面上发布单个或多个图像?另外,请告诉我,如果客户有多个facebook页面,我该如何管理?David,这是我在这个话题上能找到的最好的见解之一(和其他许多人一样,我正在努力解决这个问题)。我按照您的步骤查找“can_upload”字段,它在所有相册中显示为“false”,包括“Wall Photos”。粉丝可以通过墙上常用的照片/视频标签将照片上传到页面的墙上。所有此类照片均上传至“墙上照片”。然而,can_upload字段显示为'false',我假设一个多部分/表单post-thru图形api(pageId/photos?access_token=…)不起作用。如何使用can_upload=true创建相册?Facebook说只有你的应用程序创建的相册才会有can_upload=true,但我发现这并非全面正确。让它工作的最简单方法是在没有援助的情况下发布你的照片。默认情况下,Facebook将创建一个名为AppName's Photo's的相册(如果不存在),并将照片添加到该相册中。另外,我建议您使用访问令牌请求普通“/me”,以确保您确实使用了页面令牌,而不是您自己的用户访问令牌。非常感谢David。(尽管如此,这并不允许你将照片作为自己发布到页面或用户墙上。除非我误解了,以上几点是关于可以将照片作为“页面”上传到页面的,对吗?)。你理解正确。我指的是把照片上传到你自己的相册上。可以是页面上传到相册,也可以是你上传到自己的相册。把照片贴到别人的墙上是另一种情况。我不知道怎么做。我只是直接在facebook上测试了一下,结果这张照片似乎被放进了一本名为“TargetPage的照片”的相册中。但是我找不到这张相册的链接,它奇怪地出现在页面提要上(没有图像的缩略图,只是一条消息,上面有一张带有链接的照片)。恐怕这个代码示例在Arvind中不起作用。虽然它将返回“上传的”照片ID,但当用户尝试访问照片时,它会说“内容当前不可用”。访问令牌在两小时后过期()