2012-04-20 49 views
2

以下是我的脚本,我想用它来更新我的Facebook粉丝页面的状态,但它不能以上传的图片无法在Facebook画廊中查看的方式工作fanpage请亲切看到这个链接(http://radiations3.com/damn.jpg)其详细的屏幕截图,究竟是由我的脚本发生了什么,以及我想要做什么/从我的脚本想要什么。请让我知道我的脚本有什么问题,我该怎么做?PHP SCRIPT应该上传图片及其描述

<?php 

require 'src/facebook.php'; 

$app_id = "332267477347"; 
$app_secret = "xxxxxxxx"; 

$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
'cookie' => true, 
'fileUpload' => true, 

)); 

$facebook->setFileUploadSupport(true); 


$user = $facebook->getUser(); 
//echo $user; 

if(($facebook->getUser())==0) 
{ 
header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}"); 
exit; 
} 
else { 
$accounts_list = $facebook->api('/me/accounts'); 
echo "i am connected"; 
} 
    $valid_files = array('image/jpeg', 'image/png', 'image/gif'); 


//to get the page access token to post as a page 
foreach($accounts_list['data'] as $account){ 
     if($account['id'] == 194458563914948){  // my page id =123456789 
     $access_token = $account['access_token']; 
     echo "<p>Page -- Access Token: $access_token</p>"; 
     } 
    } 

//posting to the page wall 

if (isset($_FILES) && !empty($_FILES)) 
{ 
$folder = "pak/".$_FILES['pic']['name']; 
$fold = 'http://snowdrop.com.pk/fb/'.$folder; 
echo $fold."<br>"; 
if(move_uploaded_file($_FILES['pic']['tmp_name'], $folder)) 
{ 
#Upload photo here 
    $img = realpath($_FILES["pic"]["tmp_name"]); 
$attachment = array('message' => $_POST['textfield'], 
          'picture' => $fold, 
           'access_token' => $access_token, 


       ); 
$status = $facebook->api("/194458563914948/feed", 'post', $attachment); 

echo $status; 
var_dump($status); 

} 
else{ 
    echo 'Only jpg, png and gif image types are supported!'; 

} 
} 
?> 
<body> 
<!-- Form for uploading the photo --> 
<div class="main"> 
    <p>Select a photo to upload on Facebook Fan Page</p> 
    <form method="post" action="" enctype="multipart/form-data"> 
    <p>Select the image: <input type="file" name="pic" /> 
    <br /> 
    <label>Description 
    <input type="text" name="textfield" id="textfield" /> 
    </label> 
    </p> 
    <p><input class="post_but" type="submit" value="Upload to my album" /></p> 
    </form> 
</div> 
</body> 

Detailed image of what my script is doing and what i want instead

回答

2

得到你正在寻找你需要上传到相册ID的效果。在下面的代码中,只需添加您想要上传的专辑ID即可。


$status = $facebook->api("/Album_ID/photos", 'post', $attachment); 

<?php 

require 'src/facebook.php'; 

$app_id = "332267477347"; 
$app_secret = "xxxxxxxx"; 

$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
'cookie' => true, 
'fileUpload' => true, 

)); 

$facebook->setFileUploadSupport(true); 


$user = $facebook->getUser(); 
//echo $user; 

if(($facebook->getUser())==0) 
{ 
header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}"); 
exit; 
} 
else { 
$accounts_list = $facebook->api('/me/accounts'); 
echo "i am connected"; 
} 
    $valid_files = array('image/jpeg', 'image/png', 'image/gif'); 


//to get the page access token to post as a page 
foreach($accounts_list['data'] as $account){ 
     if($account['id'] == 194458563914948){  // my page id =123456789 
     $access_token = $account['access_token']; 
     echo "<p>Page -- Access Token: $access_token</p>"; 
     } 
    } 

//posting to the page wall 

if (isset($_FILES) && !empty($_FILES)) 
{ 
$folder = "pak/".$_FILES['pic']['name']; 
$fold = 'http://snowdrop.com.pk/fb/'.$folder; 
echo $fold."<br>"; 
if(move_uploaded_file($_FILES['pic']['tmp_name'], $folder)) 
{ 
#Upload photo here 
    $img = realpath($_FILES["pic"]["tmp_name"]); 
$attachment = array('message' => $_POST['textfield'], 
          'source' => $fold, 
           'access_token' => $access_token, 


       ); 
$status = $facebook->api("/Album_ID/photos", 'post', $attachment); 

echo $status; 
var_dump($status); 

} 
else{ 
    echo 'Only jpg, png and gif image types are supported!'; 

} 
} 
?> 
<body> 
<!-- Form for uploading the photo --> 
<div class="main"> 
    <p>Select a photo to upload on Facebook Fan Page</p> 
    <form method="post" action="" enctype="multipart/form-data"> 
    <p>Select the image: <input type="file" name="pic" /> 
    <br /> 
    <label>Description 
    <input type="text" name="textfield" id="textfield" /> 
    </label> 
    </p> 
    <p><input class="post_but" type="submit" value="Upload to my album" /></p> 
    </form> 
</div> 
</body> 
+1

我怎么能发出HTTP POST请求PAGE_ID与publish_stream和manage_pages权限/照片。 (($ facebook-> getUser())== 0) {012 - - - - - - - - - manage_pages'))}“); 退出; } – 2012-04-20 07:39:40

+1

问题现在正在解决,这行代码'source'=>'@'有问题。 $ img,当我将其更改为'source'=>'@'时。 realpath($文件夹),然后代码工作就像一个魅力.... – 2012-04-20 10:46:19