Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Ошибка invalid hash при сохранении фотографии на стене группы

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 15 Июль 2014 - 09:08

Делаю все вроде по документации. Сначала получаю адрес сервера для загрузки фото

$sRequest = "https://api.vkontakte.ru/method/photos.getWallUploadServer?group_id=".$group_id."&access_token=".$access_token;

потом формирую POST запрос на этот адрес

$post_params = array(
  'file1' => '@'.$photoPath2,
  );
  $ch = curl_init( $oResponce->response->upload_url );
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
  curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
  $response = curl_exec( $ch );
  curl_close( $ch );

Все это работает как надо, в ответ возвращаются данные такого вида string(538) "{"server":759255,"photo":"[{\"photo\":\"5c0ee7b56f:x\",\"sizes\":[[\"s\",\"618520954\",\"a410\",\"Iosmd2gQnbE\",75,46],[\"m\",\"618520954\",\"a411\",\"Rtee5OfIEAI\",130,80],[\"x\",\"618520954\",\"a412\",\"YBQDYZywmI0\",550,337],[\"o\",\"618520954\",\"a413\",\"x-oLJQgm2RI\",130,87],[\"p\",\"618520954\",\"a414\",\"P2urHyRL8vw\",200,133],[\"q\",\"618520954\",\"a415\",\"281yPf5bAc0\",320,213],[\"r\",\"618520954\",\"a416\",\"JdxpKBE6ih8\",510,337]],\"kid\":\"62ebb35ee2e5395151f63bd0d8efbae0\"}]","hash":"7ab875310ab0cb8e53d3fd4ba6e5369b"}" - это строка, которую я распиливаю на отдельные составляющие server photo и hash. В переменную $server попадает значение 759255, в $photo - 5c0ee7b56f, в hash - 7ab875310ab0cb8e53d3fd4ba6e5369b. Затем вызываю метод photos.saveWallPhoto

$rsRequest = "https://api.vkontakte.ru/method/photos.saveWallPhoto?group_id=".$group_id."&access_token=".$access_token."&photo=".$photo."&server=".$server."&hash=".$hash;
  $roResponce = json_decode(file_get_contents($rsRequest));
  var_dump($roResponce);

И каждый раз ловлю ошибку Invalid hash. Что я делаю не так? Вроде все по документации.


 

 

  • 0

#2 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Июль 2014 - 10:06

Распечатайте переменную $hash после того как выполнили запрос file_get_contents() . Сверьтесь верно ли значение !


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#3 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 15 Июль 2014 - 10:23

Попробуйте примерно так

$params = array('group_id' => $group_id,
'access_token' => $access_token,
'photo' => $photo,
'server' => $server,
'hash' => $hash,
);

$roResponce = json_decode(file_get_contents('https://api.vkontakte.ru/method/photos.saveWallPhoto' . '?' . urldecode(http_build_query($params))), true);

То есть по существу добавить функцию urldecode()


  • 0

#4 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Июль 2014 - 10:25

Ixman, Логично , а я даже и не подумал об этом .  Думаете чет не понравилось ему в тексте запроса  ? 


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#5 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 15 Июль 2014 - 10:30

kamchatniyoleg, возможно какой-то символ кодируется, но не факт

Хотя в хеше вродь левых символов нет


  • 0

#6 kamchatniyoleg

kamchatniyoleg
  • Пользователь PRO
  • 1 178 сообщений
  • Репутация: 84

Отправлено 15 Июль 2014 - 10:55

Ixman, Вот и я о том же . Хэш то целостная строка не содержащая пробелов и спец символов . Так что думаю проблема не в этом !


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#7 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 15 Июль 2014 - 10:58

Но всё же рекомендуют, это я не от себя придумал, строку запроса пропускать через urldecode


  • 0

#8 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 16 Июль 2014 - 21:32

Ixman, переделал, все равно та же самая ошибка. А переменную $photo я правильно отправляю? Может в ней дело? 

 

Она вообще формируется такого вида 

"[{\"photo\":\"8452aa08e3:x\",\"sizes\":[[\"s\",\"618520954\",\"a9f4\",\"d9TZ9icWzo8\",75,46],[\"m\",\"618520954\",\"a9f5\",\"-5YCCCjIbfQ\",130,80],[\"x\",\"618520954\",\"a9f6\",\"b177AuIEb0A\",550,337],[\"o\",\"618520954\",\"a9f7\",\"1FubRCLke2A\",130,87],[\"p\",\"618520954\",\"a9f8\",\"WsFQKz4fqrU\",200,133],[\"q\",\"618520954\",\"a9f9\",\"Iv6115azBN8\",320,213],[\"r\",\"618520954\",\"a9fa\",\"hj1lU8lSfzY\",510,337]],\"kid\":\"62ebb35ee2e5395151f63bd0d8efbae0\"}]",

 значит это все и надо отправлять?


  • 0

#9 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 16 Июль 2014 - 21:37

А как вы распиливаете данные, наверное фото нужно целиком отправлять


Я так понял там полная информация о фото


  • 0

#10 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 16 Июль 2014 - 22:01

Ixman,  я отправляю только эту часть 8452aa08e3


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru