2012-01-30 56 views
0

我已經運行了所有相關主題,但無法找到此答案: 是否可以將應用程序照片僅存儲在其自己的網頁相冊中? 請注意,每個用戶都應該將照片上傳到同一個相冊。 我已經看到,應用程序可以在users/pages配置文件中創建相冊,但將所有內容存儲在一個位置會更好。
我收到以下錯誤:使用圖形API將文件上傳到應用程序頁面專輯

Uncaught OAuthException: (#120) Invalid album id (base_facebook.php line 1038)

代碼:

public function setPageToken($userId = 'MY_USER_ID', 
     $pageId = 'APP_PAGE_ID') 
{ 
    // get logged in all page 
    $args = array 
    (
     'fileds' => 'id,access_token', 
     'scope'  => 'manage_pages,publish_stream' 
    ); 
    $accounts = $this->api('/'.$userId.'/accounts','get',$args); 
    // fetch the desired page access token 
    foreach($accounts['data'] as $k => $v) 
    { 
     if($v['id'] == $pageId) 
     { 
      $token = $v['access_token']; 
      break; 
     } 
    } 
    return $token; 
} 

注:

  1. 我的應用程序ID不等於我的應用程序頁面ID
  2. $賬戶返回值爲空

回答

0

從理論上講,這裏是你需要做什麼:

  1. 獲取頁面訪問令牌具有權限的上傳照片。
  2. 硬編碼或以其他方式存儲後者access token
  3. 下次用戶使用HTML表單上傳照片時,您需要使用後者的訪問令牌將照片上傳到網頁相冊。

請注意,理論上這不需要授權上傳照片的用戶。但是,如果問題是您是否可以代表用戶將照片上傳到第三方頁面,則不能。

此外,請注意,如果您使用的是Facebook PHP SDK,則默認訪問令牌將是當前活動會話(用戶)的令牌。因此,您需要手動將其更改爲頁面訪問令牌或發出cURL請求。

$ch = curl_init(); 
$url = "https://graph.facebook.com/" . $album_id . "/photos?access_token=" . $access_token; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$retdata = curl_exec($ch); 
echo($retdata); 

upload photo to page timeline Facebook SDK

相關問題