2012-01-30 140 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