Intereting Posts
Laravel Basic HTTP Auth Check Возврат False Определение типа файла с помощью PHP. Что такое Magic Database? Regex заменить атрибут html src в PHP Несколько таблиц в одной модели – Laravel почта не может быть доставлена ​​на PHP, даже SMTP-сервер запущен, а PHP mail () возвращает true Это лучший формат CSV-файла для импорта в базу данных MySQL Laravel Custom Auth Как вы можете уловить ошибку «отказа в разрешении» при использовании fopen в PHP без использования try / catch? Форумы PHP – как справиться с непрочитанными дискуссиями / темами / сообщениями mySQL – сопоставление латинской (английской) формы ввода с utf8 (неанглийскими) данными Повторное использование инструкции PDO var приводит к сбою процесса Как добавить скрипты и таблицы стилей внутри модуля yii Развертывание контента на несколько серверов (EC2) PHP – синтаксический анализ данных многочастной формы Есть ли причина, по которой мне нужно использовать stripslashes для представленных пользователем данных?

Публикация фотографии в FB приводит к ошибке при загрузке файла

У меня есть следующий код, который, как мне кажется, очень близок к работе, но я продолжаю получать следующую ошибку:

{"error":{"message":"(#324) Requires upload file","type":"OAuthException"}} 

но я не могу понять, как указать файл загрузки … Я пробовал как изображение, так и источник, оба дают ту же ошибку. Любые мысли, помощь, предложения были бы очень благодарны, поскольку я боролся с этим в течение нескольких дней, и кажется, что это не должно быть так сложно …

 <html> <head> <title>Photo Upload</title> </head> <body> <?php $app_id = "MY APP ID GOES HERE"; $app_secret = "MY APP SECRET GOES HERE"; $post_login_url = "MY URL GOES HERE"; $album_name = "Test Album"; $album_description = "Blah Blah event Photos"; $photo_source = realpath("C:\\Users\\Public\\Pictures\\Sample Pictures\\Lighthouse.jpg"); $photo_message = 'Here is the lighthouse'; $code = $_REQUEST["code"]; echo "code ==>" . $code . '<br/><br/>'; //Obtain the access_token with publish_stream permission if(empty($code)){ $dialog_url= "http://www.facebook.com/dialog/oauth?" . "client_id=" . $app_id . "&redirect_uri=" . urlencode($post_login_url) . "&scope=publish_stream,user_photos"; echo("<script>top.location.href='" . $dialog_url . "'</script>"); } else { $token_url= "https://graph.facebook.com/oauth/" . "access_token?" . "client_id=" . $app_id . "&redirect_uri=" . urlencode( $post_login_url) . "&client_secret=" . $app_secret . "&code=" . $code; $response = file_get_contents($token_url); $params = null; parse_str($response, $params); $access_token = $params['access_token']; echo "access_token ==>" . $access_token . '<br/><br/>'; // Create a new album $graph_url = "https://graph.facebook.com/me/albums?" . "access_token=". $access_token; $postdata = http_build_query( array( 'name' => $album_name, 'message' => $album_description ) ); $opts = array('http' => array( 'method'=> 'POST', 'header'=> 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = json_decode(file_get_contents($graph_url, false, $context)); // Get the new album ID $album_id = $result->id; //upload photo echo "album_id ==>" . $album_id . '<br/><br/>'; // Upload the photo $args = array( 'message' => $photo_message, 'image' => $photo_source ); $ch = curl_init(); $url = 'https://graph.facebook.com/'.$album_id.'/photos? access_token='.$access_token; echo "url ==>" . $url . '<br/><br/>'; 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); $data = curl_exec($ch); echo "data ==>" . $data . "<br>"; } ?> </body> </html> 

Вам нужно установить config var fileUpload в true при создании нового экземпляра класса Facebook, как описано в документации здесь и здесь . И вам также нужно разрешение photo_upload 😉

 require_once("facebook.php"); $config = array(); $config['appId'] = 'YOUR_APP_ID'; $config['secret'] = 'YOUR_APP_SECRET'; $config['fileUpload'] = true; // <-- set this to 'true' otherwise it won't work $facebook = new Facebook($config); 

Вы используете имя файла вместо самого файла в вызове Graph API.

Вы должны префикс имени файла с помощью @

 $args = array( 'message' => $photo_message, 'image' => '@'.$photo_source );