Я предлагаю использовать Facebook php SDK , это будет проще, и код будет работать с будущими обновлениями API:
Использование Graph API php sdk:
$fbk = new Facebook(/* conf */);
$fbk->setFileUploadSupport(true);
//If you are executing this in a script, and not in a web page with the user logged in:
$fbk->setAccessToken(/* access token from other sources */);
//To add to an album:
$fbk->api("/$albumId/photos", "POST",
array('source' => '@'. realpath($myPhoto), 'message' => "Nice photo"));
//To upload a photo directly (the album will be created automatically):
$fbk->api("/me/photos", "POST",
array('source' => '@'. realpath($myPhoto), 'message' => "Nice photo"));
Использование cURL напрямую:
Если вы действительно хотите использовать cURL, ваш код почти верен, но ошибка в массиве $ args:
$args = array(
'message' => 'Photo from application',
'source' => file_get_contents($file)
);
Поскольку ключ для данных фотографии source
, см. Facebook Doc
Примечание на @ в cURL:
Также обратите внимание, что @
в cUrl означает, что параметр будет заменен фактическими байтами файла, следующего за @
, поэтому он не требуется, если вы уже указали в параметре source
фактические байты.