2012-01-30 142 views
3

我想知道如何通过图表API将图片url或其他任何数据上传到Facebook。我试图从Graph API Explorer获取图像数据,但它给我false。当我把我的access_tokenuser_photos它给了我细节。然而,我可以从$facebook->getAccessToken();得到的默认访问令牌仍然给我falseFacebook API - 我上传后获取图片URL

所以我的问题是 - 我上传到Facebook后如何获取图像数据?

这里是我的代码:

<?php 

require 'fb/src/facebook.php'; 

if ($_FILES["file"]["error"] == 0) 
{ 
    // Getting 
    $file = $_FILES["file"]; 
    $fileExtension = $imgExtension = end(explode(".", $file["name"])); 
    $upload_dir = "upload/"; 

    // Modifying 
    $newName = md5(uniqid()) . "." . $fileExtension; 

    // Checking if this name already exists 
    while (file_exists($upload_dir . $newName) == true) 
    { 
     $newName = md5(uniqid()) . "." . $fileExtension; 
    } 

    // Uploading 
    if (move_uploaded_file($file['tmp_name'], $upload_dir . $newName) == true) 
    { 
     $facebook = new Facebook(array(
        'appId' => 'app id', 
        'secret' => 'app secret', 
       )); 

     $facebook->setFileUploadSupport(true); 
     $args = array(
      "message" => "test caption" 
     ); 

     $args['image'] = '@' . realpath($upload_dir . $newName); 

     $data = $facebook->api('/me/photos', 'post', $args); 
     print_r($data); 
    } 
    else 
    { 
     echo "Error."; 
    } 
} 

回答

2

你应该得到的回应上传照片(在你的情况$data)的id,简单的调用图形API与id应该返回你所有需要的信息。

$data = $facebook->api('/me/photos', 'post', $args); 
$photo_data = json_decode($data, true); 
$photo = $facebook->api('/'.$photo_data['id']); 

$thumbnail = $photo['picture']; 
$large_photo = $photo['source']; 
$photo_page = $photo['link']; 

更新:你应该要求user_photos阅读photo对象的详细信息。

+0

当我尝试它时,它什么都不返回。 – sed 2012-01-30 10:09:53

+0

你有上传照片的身份证吗?什么[OpenGraph资源管理器工具](http://developers.facebook.com/tools/explorer)返回该'id'? – 2012-01-30 10:12:26

+0

它返回'假'。只有当我启用'user_photos'并输入access_token时,我才能获得图像数据。 – sed 2012-01-30 10:17:02