簡體   English   中英

如何使用Facebook Graph API將照片上傳到相冊

[英]How can I upload photos to album using Facebook Graph API

這是代碼:

$file= 'bbbb.jpg';
$data = array(
            basename($file) => "@".realpath($file),
            "caption" => "Uploaded using graph api",
            "aid" => '13595',
            "access_token" => $accessToken,
            'method' => 'photos.upload'
);
$sds =$facebook->api($data);

這是錯誤

未捕獲的CurlException:26:創建formpost數據失敗

該怎么辦?

以下是使用Graph API上傳照片的各種方法。 這些示例假設您已實例化$ facebook對象並為當前用戶提供有效會話。

1 - 當前用戶的默認應用程序專輯

此示例將照片上傳到當前用戶的默認應用程序相冊。 如果相冊尚不存在,則會創建相冊。

$args = array('message' => 'Photo Caption');
$args['image'] = '@' . realpath($FILE_PATH);

$data = $facebook->api('/me/photos', 'post', $args);
print_r($data);

2 - 目標專輯

此示例將照片上傳到特定相冊。

$args = array('message' => 'Photo Caption');
$args['image'] = '@' . realpath($FILE_PATH);

$data = $facebook->api('/'. $ALBUM_ID . '/photos', 'post', $args);
print_r($data);

3 - 具有訪問令牌的目標專輯

此示例將照片上傳到需要訪問令牌的特定相冊。

 $args = array('message' => 'Photo Caption');
$args['image'] = '@' . realpath($FILE_PATH);

$data = $facebook->api('/'. $ALBUM_ID . '/photos?access_token='. $ACCESS_TOKEN, 'post', $args);
print_r($data);

你的$ data數組應該有“message”而不是“caption”,同樣,刪除“aid”,“method”和“access_token”
你的$ data必須有文件數據和“消息”,就是這樣。

$sds =$facebook->api('/me/13595/photos', 'POST', $data);

而不是13595只使用變量與專輯輔助

另外,如果需要,access_token最好附加到api uri,如下所示:

$sds =$facebook->api('/me/13595/photos?access_token='.$access_token, 'POST', $data);

另外,如果php sdk不適合你,我已經成功使用了cURL,如果你的php安裝支持它。 在這種情況下,請參閱使用Facebook的Graph API將照片上傳到相冊的 cURL示例

最新版本的Facebook PHP SDK無法使用上述示例,而無需對代碼進行以下更新。

class Facebook {
...
*Line #539*
protected function makeRequest($url, $params, $ch=null) {
if (!$ch) {
  $ch = curl_init();
}

if( isset($params['doMultiPart']) ) {
    $doMultiPart= true;
    unset($params['doMultiPart']);
} else {
    $doMultiPart= false;
}

$opts = self::$CURL_OPTS;
$opts[CURLOPT_POSTFIELDS] = $doMultiPart ? $params : http_build_query($params, null, '&');
...

基本上問題是PHP SDK使用“curl_setopt_array”,如果你傳遞一個url編碼的字符串作為選項值它將傳遞數據作為application / x-www-form-urlencoded當你真正想要的是multipart / form-數據 ; 要做到這一點,我們只需切換到傳遞選項數組,如果我們在params數組中有一個doMultiPart參數。

這是一個快速的黑客,我把它放在一起工作,可能需要檢查代碼,以確保它不會破壞你正在做的其他事情。 否則享受。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM