• Возможны ли в тексте переходы на новую строку, при публикации через метод mediatopic.post API Одноклассников в php?

    @osliktv
    Vjacheslav Kanivetc: спасибо, экранирование сработало. хотя я точно помню что тестировал неделю назад и не получалось, видимо перечесанный код стал работать как надо. текст публикуется с переходами.
  • Возможны ли в тексте переходы на новую строку, при публикации через метод mediatopic.post API Одноклассников в php?

    @osliktv
    Вячеслав,

    все верно. без encoding-а url-ов оно и не будет работать. если не кодировать ваш http сервер посылает очень далеко. url кодирую urlencode-ом. от POST/GET не зависит.

    вот мой код который должен публиковать пост с картинкой

    function calc_ok_url($va) {
    $va = array_merge($va, array('application_key' => OK_PUBLICKEY, 'session_key' => OK_SESSIONKEY, 'format' => 'json'));
    ksort($va);
    $cs = null;
    $us = null;
    foreach ($va as $k => $v) {
    $cs .= $k.'='.$v;
    $us .= '&'.$k.'='.urlencode($v);
    }
    return 'https://api.ok.ru/fb.do?'.ltrim($us, '&').'&access_token='.OK_ACCESSTOKEN.'&sig='.md5($cs.OK_SECRETSESSIONKEY);
    }

    # get image upload path and id
    $url = calc_ok_url(array('method' => 'photosV2.getUploadUrl', 'gid' => OK_GROUPID));
    $res = json_decode(geturl($url));

    # upload image
    $upload_url = $res->upload_url;
    $image_id = $res->photo_ids[0];
    exec("curl -s -X POST -F 'photo=@".$a['image']."' '$upload_url'", $resc);
    $image_token = json_decode($resc[0])->photos->$image_id->token;

    # post message
    $url = calc_ok_url(array('method' => 'mediatopic.post', 'attachment' => '{"media":[{"type":"text","text":"'.$a['message'].'"},{"type":"photo","list":[{"id":"'.$image_token.'"}]}]}', 'gid' => OK_GROUPID, 'session_secret_key' => OK_SECRETSESSIONKEY, 'type' => 'GROUP_THEME'));
    $ret = geturl($url, array('usepost' => 1));

    пока в $a['message'] нет переходов на новую строку, все работает. как только появляются, сразу ошибка - Invalid parameter attachment value.

    я даже попробовал использовать вашу php библиотеку вот отсюда

    https://github.com/apiok/php_sdk_example/blob/mast...

    для формирования запросов. запросы и сигнатуры получаются идентичными и все это сворачивается в

    $res = OdnoklassnikiSDK::makeRequest("photosV2.getUploadUrl", array("format" => "json", 'session_key' => OK_SESSIONKEY, 'gid' => OK_GROUPID));

    # upload image
    $upload_url = $res->upload_url;
    $image_id = $res->photo_ids[0];
    exec("curl -s -X POST -F 'photo=@".$a['image']."' '$upload_url'", $resc);
    $image_token = json_decode($resc[0])->photos->$image_id->token;

    $res = OdnoklassnikiSDK::makeRequest("mediatopic.post", array("format" => "json", 'session_key' => OK_SESSIONKEY, 'gid' => OK_GROUPID, 'attachment' => '{"media":[{"type":"text","text":"'.$a['message'].'"},{"type":"photo","list":[{"id":"'.$image_token.'"}]}]}', 'type' => 'GROUP_THEME', 'session_secret_key' => OK_SECRETSESSIONKEY));

    но ошибка также лезет. может быть все таки ошибка в API?