Страница 1 из 2
Нужна помощь в отправке фотографии на стену
Добавлено: 19 янв 2015, 13:36
zmanz
Отправка фотографии состоит из 3х этапов:
застрял на втором этапе, где нужно отправить на сервер фотографию и получить от него ответ. Отправляю при помощи функции 2 значения, первый параметр сервер, второй картинка:
Код: Выделить всё
json_query2('http://cs624631.vk.com/upload.php?act=do_add&mid=4****3&aid=-14&gid=0&hash=706b398ac686583**********c2f907b7df&rhash=b85***********40370d8&swfupload=1&api=1&wallphoto=1', 'http://dmd86.ru/upload/iblock/b64/b64623f7ca1dc3599eb463297d971bcb.jpg');
Ответ сервера:
Код: Выделить всё
{"server":624631,"photo":"[]","hash":"eb6229534c79936723fd54b0f41d3aa4"}
Не могу понять почему photo = [];
В чем причина подскажите пожалуйста???
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 20 янв 2015, 18:11
maxdjab
Код: Выделить всё
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $VKuploadUrl); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => '@/home/njoil/data/www/sait.ru/img/'.$imggr));
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 20 янв 2015, 18:41
zmanz
maxdjab, спасибо Вам большое, очень помогли нужно было оказывается прописывать путь к фотографии от корня сервера от $SERVER['document_root'] и впереди обязательно собаку ставить
А если я хочу разместить фотографию скажем с другого сайта как мне тогда ссылку указать на фотографию??? Или можно только со своего компьютера??? И я так понимаю что картинка должна обязательно лежать на локальном сервере

Re: Нужна помощь в отправке фотографии на стену
Добавлено: 20 янв 2015, 21:10
maxdjab
Картинка должна лежать там, откуда идет запрос к апи
То есть где скрипт там и картинки
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 11:47
zmanz
Ага спасибо за помощь, но теперь на следующем шаге я застрял.
Код: Выделить всё
function json_query ($method, $params) { $ch = curl_init('https://api.vk.com/method/'.$method.'?'.$params.'&access_token=cc2347538c814109970e******************a78d5870921b67f5'); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //отключаем проверку сертификатов curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); $data = curl_exec($ch); curl_close($ch); return json_decode($data,true);} // 3 ШАГ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////echo "SERVER: ".$server."<br />";echo "PHOTO: ".$photo."<br />";echo "HASH: ".$hash."<br />";echo "GROUP ID: ".$id_G; $result = json_query("photos.saveWallPhoto", array("server" => $server, "photo" => $photo, "hash" => $hash, "group_id" => $id_G));pr($result);
Вот ошибка, которую выводит сервер:
http://prntscr.com/5vjaef
Пишет что проблема в хэше, почему не могу понять. Ведь я подставляю все данные из ответа сервера и добавляю туда лишь свою группу. Как может быть не правильным хэш???

Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 11:54
zmanz
Да и почему в request_params массив под индексом 2 пустой (в ответе сервера -
http://prntscr.com/5vjaef)???
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 13:20
zmanz
Вот полностью ответ сервера:
Код: Выделить всё
Array( [error] => Array ( [error_code] => 121 [error_msg] => Invalid hash [request_params] => Array ( [0] => Array ( [key] => oauth [value] => 1 ) [1] => Array ( [key] => method [value] => photos.saveWallPhoto ) [2] => Array ( [key] => Array [value] => ) [3] => Array ( [key] => access_token [value] => cc2347538c814109970e748182f4bb251c813d6ca548d8b42ed20932cce9581b6a780a78d5870921b67f5 ) [4] => Array ( [key] => server [value] => 622331 ) [5] => Array ( [key] => photo [value] => fec117abda:w ) [6] => Array ( [key] => hash [value] => a6f04b1b6b6b2bf51f209db5a3faebfd ) [7] => Array ( [key] => group_id [value] => 44802890 ) ) ) )
Из ошибки 121 понятно что:
100 - Один из необходимых параметров был не передан или неверен.
Посмотрел как работает этот метод в самом вконтакте, там при отправке есть еще поле
Код: Выделить всё
request_params: [{key: 'sig',value: '0ef03300605123c495421571bc90a3bb'},
У меня его нету, почему??? Я ведь все параметры передаю в метод photos.saveWallPhoto
21 - Данное действие разрешено только для Standalone и Open API приложений.
Я создавал standalone приложение и token формировал учитывая его client_id.
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 13:45
maxdjab
Права приложения?
Вот 100% рабочий
Код: Выделить всё
// грузим фото вк$upurl = 'https://api.vk.com/method/photos.getWallUploadServer?group_id='.$groop.'&access_token='.$token; $upl = file_get_contents_curl($upurl); // Отправляем запрос $uplj = json_decode($upl); // Преобразуем JSON-строку в массив $VKuploadUrl = $uplj->response->upload_url;if (!empty($VKuploadUrl)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $VKuploadUrl); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => '@'.$imggr)); $otvet = curl_exec($ch); curl_close($ch); } $vkupl = json_decode($otvet); // Преобразуем JSON-строку в массив $walls = $vkupl->server; // Получаем массив server $wallphoto = $vkupl->photo; // Получаем массив photo $wallhash = $vkupl->hash; // Получаем массив hash if (!empty($walls) && !empty($wallphoto) && !empty($wallhash)) { $saveImageResult = 'https://api.vk.com/method/photos.saveWallPhoto?group_id='.$groop.'&access_token='.$token.'&server='. $walls.'&hash='.$wallhash.'&photo='.$wallphoto; //echo $saveImageResult; $upr = file_get_contents_curl($saveImageResult); // Отправляем запрос $uprj = json_decode($upr); // Преобразуем JSON-строку в массив $uprj = $uprj->response; // Получаем массив ; $phid = ''; for ($i = 0; $i < count($uprj); $i++) { $phid = $uprj[$i]->id; } }else{$error .= 'error'; }//Инициализируем классСама отправка....
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 14:04
maxdjab
Попробуйте токен этого приложения
Код: Выделить всё
http://oauth.vk.com/authorize?client_id=4523349&scope=wall,offline,photos,groups&redirect_uri=http://oauth.vk.com/blank.html&display=page&response_type=token
Re: Нужна помощь в отправке фотографии на стену
Добавлено: 22 янв 2015, 14:39
zmanz
попробовал та же самая ошибка ((
Я Вам личным сообщением отправил данные посмотрите если не сложно