Нужна помощь в отправке фотографии на стену

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Нужна помощь в отправке фотографии на стену

Сообщение 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 = [];

В чем причина подскажите пожалуйста???
Аватара пользователя
maxdjab
Сообщения: 13
Зарегистрирован: 26 июн 2013, 19:43

Re: Нужна помощь в отправке фотографии на стену

Сообщение 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)); 
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Re: Нужна помощь в отправке фотографии на стену

Сообщение zmanz »

maxdjab, спасибо Вам большое, очень помогли нужно было оказывается прописывать путь к фотографии от корня сервера от $SERVER['document_root'] и впереди обязательно собаку ставить

А если я хочу разместить фотографию скажем с другого сайта как мне тогда ссылку указать на фотографию??? Или можно только со своего компьютера??? И я так понимаю что картинка должна обязательно лежать на локальном сервере ;)
Аватара пользователя
maxdjab
Сообщения: 13
Зарегистрирован: 26 июн 2013, 19:43

Re: Нужна помощь в отправке фотографии на стену

Сообщение maxdjab »

Картинка должна лежать там, откуда идет запрос к апи
То есть где скрипт там и картинки
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Re: Нужна помощь в отправке фотографии на стену

Сообщение 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
Пишет что проблема в хэше, почему не могу понять. Ведь я подставляю все данные из ответа сервера и добавляю туда лишь свою группу. Как может быть не правильным хэш??? :(
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Re: Нужна помощь в отправке фотографии на стену

Сообщение zmanz »

Да и почему в request_params массив под индексом 2 пустой (в ответе сервера - http://prntscr.com/5vjaef)???
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Re: Нужна помощь в отправке фотографии на стену

Сообщение 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.
Аватара пользователя
maxdjab
Сообщения: 13
Зарегистрирован: 26 июн 2013, 19:43

Re: Нужна помощь в отправке фотографии на стену

Сообщение 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';  }//Инициализируем классСама отправка....
Аватара пользователя
maxdjab
Сообщения: 13
Зарегистрирован: 26 июн 2013, 19:43

Re: Нужна помощь в отправке фотографии на стену

Сообщение 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
zmanz
Сообщения: 10
Зарегистрирован: 19 янв 2015, 13:09

Re: Нужна помощь в отправке фотографии на стену

Сообщение zmanz »

попробовал та же самая ошибка ((
Я Вам личным сообщением отправил данные посмотрите если не сложно
Ответить