Я создаю приложение php, которое должно размещать загруженное пользователем изображение непосредственно в Instagram, но после быстрого поиска я обнаружил, что в API нет такой функции 🙁 и это кажется странным … потому что они должны предоставить один. я не уверен, есть ли какой-либо другой способ (кроме приложений для Android и iOS) для загрузки изображения с использованием php. Просьба дать мне любую идею, если есть какая-либо возможность.
Я также читал это,
Как поделиться ссылкой и фотографией с Instagram с помощью PHP
спасибо
Если вы прочитали ссылку, которую вы поделили, принятый ответ:
Вы не можете отправлять изображения в Instagram через API.
Кажется, вы можете эмулировать instagram на ПК.
Bluestacks – это эмулятор, который позволяет запускать приложения для Android на вашем ПК / Mac и т. Д.
Я не уверен, насколько хорошо это работает.
Второй вариант – использовать это . Это API-интерфейс Instagram, однако он был изменен в обратном порядке и объясняет, как его использовать (включая загрузку медиафайлов).
Опять же, не уверен, как хорошо это работает.
Обновить:
Instagram теперь запрещают учетные записи и удаляют изображения на основе этого метода. Пожалуйста, используйте с осторожностью.
Кажется, что каждый, кто ответил на этот вопрос с чем-то по этому поводу, it can't be done
это несколько правильно. Официально вы не можете опубликовать фотографию в Instagram с их API. Однако, если вы перепроектируете API, вы можете.
function SendRequest($url, $post, $post_data, $user_agent, $cookies) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://i.instagram.com/api/v1/'.$url); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if($post) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } if($cookies) { curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); } else { curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); } $response = curl_exec($ch); $http = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return array($http, $response); } function GenerateGuid() { return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); } function GenerateUserAgent() { $resolutions = array('720x1280', '320x480', '480x800', '1024x768', '1280x720', '768x1024', '480x320'); $versions = array('GT-N7000', 'SM-N9000', 'GT-I9220', 'GT-I9100'); $dpis = array('120', '160', '320', '240'); $ver = $versions[array_rand($versions)]; $dpi = $dpis[array_rand($dpis)]; $res = $resolutions[array_rand($resolutions)]; return 'Instagram 4.'.mt_rand(1,2).'.'.mt_rand(0,2).' Android ('.mt_rand(10,11).'/'.mt_rand(1,3).'.'.mt_rand(3,5).'.'.mt_rand(0,5).'; '.$dpi.'; '.$res.'; samsung; '.$ver.'; '.$ver.'; smdkc210; en_US)'; } function GenerateSignature($data) { return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916'); } function GetPostData($filename) { if(!$filename) { echo "The image doesn't exist ".$filename; } else { $post_data = array('device_timestamp' => time(), 'photo' => '@'.$filename); return $post_data; } } // Set the username and password of the account that you wish to post a photo to $username = 'ig_username'; $password = 'ig_password'; // Set the path to the file that you wish to post. // This must be jpeg format and it must be a perfect square $filename = 'pictures/test.jpg'; // Set the caption for the photo $caption = "Test caption"; // Define the user agent $agent = GenerateUserAgent(); // Define the GuID $guid = GenerateGuid(); // Set the devide ID $device_id = "android-".$guid; /* LOG IN */ // You must be logged in to the account that you wish to post a photo too // Set all of the parameters in the string, and then sign it with their API key using SHA-256 $data ='{"device_id":"'.$device_id.'","guid":"'.$guid.'","username":"'.$username.'","password":"'.$password.'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; $sig = GenerateSignature($data); $data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4'; $login = SendRequest('accounts/login/', true, $data, $agent, false); if(strpos($login[1], "Sorry, an error occurred while processing this request.")) { echo "Request failed, there's a chance that this proxy/ip is blocked"; } else { if(empty($login[1])) { echo "Empty response received from the server while trying to login"; } else { // Decode the array that is returned $obj = @json_decode($login[1], true); if(empty($obj)) { echo "Could not decode the response: ".$body; } else { // Post the picture $data = GetPostData($filename); $post = SendRequest('media/upload/', true, $data, $agent, true); if(empty($post[1])) { echo "Empty response received from the server while trying to post the image"; } else { // Decode the response $obj = @json_decode($post[1], true); if(empty($obj)) { echo "Could not decode the response"; } else { $status = $obj['status']; if($status == 'ok') { // Remove and line breaks from the caption $caption = preg_replace("/\r|\n/", "", $caption); $media_id = $obj['media_id']; $device_id = "android-".$guid; $data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","media_id":"'.$media_id.'","caption":"'.trim($caption).'","device_timestamp":"'.time().'","source_type":"5","filter_type":"0","extra":"{}","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; $sig = GenerateSignature($data); $new_data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4'; // Now, configure the photo $conf = SendRequest('media/configure/', true, $new_data, $agent, true); if(empty($conf[1])) { echo "Empty response received from the server while trying to configure the image"; } else { if(strpos($conf[1], "login_required")) { echo "You are not logged in. There's a chance that the account is banned"; } else { $obj = @json_decode($conf[1], true); $status = $obj['status']; if($status != 'fail') { echo "Success"; } else { echo 'Fail'; } } } } else { echo "Status isn't okay"; } } } } } }
Просто скопируйте и вставьте код в текстовый редактор, измените несколько переменных и VOILA! Я написал статью об этом, и я делал это много раз. См. Демонстрацию здесь .
Вы можете использовать pynstagram , это простой инструмент CLI и модуль Python:
pynstagram -u username -p password -f ~/kittens/31415.jpg -t '#meow'
Для пользователей, которые находят этот вопрос, вы можете передавать фотографии в поток обмена instagram (с вашего приложения на экран фильтров) на iPhone с помощью iPhone-крючков: http://help.instagram.com/355896521173347 Кроме этого, в настоящее время нет в версии 1 api.