Метод постинга на стену

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Метод постинга на стену

Сообщение InsideZ »

Знатоки, подскажите. Приложение iframe. Написал метод постинга на стену. По всем запросам нормальные ответы, ошибок не возвращает, но на стену ничего не постит. Не могу понять, нужно ли для iframe приложения делать флэш-контейнер. Пробовал делать в настройках приложения "Вывод приложения с отступами и т.д." и без них, результат не менялся. Вот код, и что он возвращает:

Код: Выделить всё

 // отправить сообщение друзьям пользователя на стенуCApiVkTravel.prototype.UserFriendsSendToWall = function (uid, message) {    // возвращает upload_url, куда буду загружать картинку    VK.api('wall.getPhotoUploadServer', {}, function (data) {        if (data.response) {            $.post(                // отправляю со своего сервера изображение на upload_url                'index/uploadimage',                {upload_url:data.response.upload_url},                function (json) {                    // все нормально, ответ примерно такой:                     // {"mid": "1111111", "gid": "0", "server": "11111", "photo": "837556e9f8x", "hash": "e72597b6a5c86589e02c933458dc8e4c"}                    // дальше пытаюсь запостить на стену                    VK.api('wall.savePost',                            {wall_id: uid, message: message, server: json.server, photo: json.photo, hash:json.hash, post_id:123},                            function(data) {                                if (data.response) {                                    // в итоге получаю вполне нормальный ответ:                                    // {"response":{"post_hash":"e5627416cab8f8391c",                                    // "photo_src":"http:\/\/cs11111.vk.com\/u1111111\/m_7b7f9489.jpg"}}                                    // а поста на стене нет                                    console.log(data);                                }                            }                        );                }, 'json');        }    })} 
altermann
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45

Re: Метод постинга на стену

Сообщение altermann »

так а где вызов метода saveWallPost ? Оно как раз и открывает окошко сохранения поста на стену:

"4. С помощью вызова функции saveWallPost Flash-контейнера с параметром post_hash, полученном в п.3, приложение может сохранить изображение с дополнительным текстом на стене пользователя. "

Загрузка изображения на стену пользователя
altermann
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45

Re: Метод постинга на стену

Сообщение altermann »

Слушай, я как раз занимаюсь этим вопросом, не мог бы ты показать скрипт, который загружает имагу на сервак контакта?
сенкс.
altermann
Сообщения: 6
Зарегистрирован: 27 окт 2010, 16:45

Re: Метод постинга на стену

Сообщение altermann »

хотя не надо, уже написал =)

прекрасно работает, кстати, этот код, просто добавь метод, который сохраняет запись.
Аватара пользователя
Doker
Модератор
Модератор
Сообщения: 1026
Зарегистрирован: 07 май 2010, 18:53

Re: Метод постинга на стену

Сообщение Doker »

Сделай урок. Получиш много благодарностей )
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

'index/uploadimage' - что делает этот скрипт? - мне кажется что этот пост-запрос адресован на Ваш скрипт на сервере. а должно быть наоборот чтоли - вы должны слать на скрипт, который пришел по JSON. помогите разобраться...
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

Здравствуйте, Вы писали пост запрос на 'index/uploadimage', но в комментарии пишете о том, что шлёте запрос на upload_url. Растолкуйте пожайлуйста мне - это опечатка или это должно быть так.
Я столкнулся с проблемой в этом пост запросе - шлю данные на полученный upload_url но в ответ не получаю JSON.

Код: Выделить всё

VK.api('wall.getPhotoUploadServer', { wall_id: 10125748 }, function(data)         {            if (data.response)             {                upload_url = data.response.upload_url;                                alert( upload_url );                                                             $.post( upload_url, { photo: 'http://trvx.ru/jpg/notification.jpg' }, function(data)                {   //здесь ответ таков(если перейти по запросу в firebug - иначе не получаем ответа) /*{"mid": "10125748", "gid": "0", "server": "11449", "photo": "", "hash": "8f44ed5e553d7379f174bad775a26c26"    */                    hash = data.hash;                    alert( hash );                 });             }       });
Надеюсь Вы мне поможете разобраться...
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Re: Метод постинга на стену

Сообщение InsideZ »

я пользуюсь Zend Framework, если кому понадобится, вот экшн, который загружает картинку на сервер вонтакте:

Код: Выделить всё

 public function uploadimageAction(){    // здесь получаем сервер вконтакте, куда загружать изображение ('upload_url')    $upload_url = $this->_request->getParam();    if (!empty($upload_url)) {        // создаем объект клиента        $client = new Zend_Http_Client();        // указываем url, куда обращаться, куда загружаем изображение        $client->setUri($upload_url);        // определяем метод запроса        $client->setMethod(Zend_Http_Client::POST);        // указываем файл изображения        $cnf = Zend_Registry::get('cnf');        $client->setFileUpload($cnf->path->images . 'yazdesbyl.png', 'photo');        // выполняем запрос        $result = $client->request();        // смотрим результаты (сразу приходят в json)        if ($result->isError()) {            echo $result->getStatus();        } else {            echo $result->getBody();            // таким образом мы получили строку вида             // {"mid": "1111111", "gid": "0", "server": "11111",             // "photo": "837556e9f8x", "hash": "e72597b6a5c86589e02c933458dc8e4c"}        }        exit();    }} 
Guard-x, пост запрос на 'index/uploadimage' в моем коде отправляет моему серверу только upload_url, куда загружать изображение, далее уже выполняется php кросс-доменный запрос загрузки изображения с моего сервера на сервер вконтакте. Ваш firebug показал ответ пост-запроса загруженной фотки ({"mid": "10125748", "gid": "0", "server": "11449", "photo": "" ....). Только photo пустое вернул. Попробуйте определить тип данных, с которыми работаете (json), и надо заметить, что метод wall.getPhotoUploadServer не имеет параметров. Хотя, это влиять на что-либо не должно. Ваш код будет выглядеть примерно так:

Код: Выделить всё

 VK.api('wall.getPhotoUploadServer', {}, function(data) {    if (data.response) {        upload_url = data.response.upload_url;        alert( upload_url );        $.post(            upload_url,            {photo: 'http://trvx.ru/jpg/notification.jpg' },            function(json) {                hash = json.hash;                alert( hash );            },             'json'        );    }}); 
altermann, по поводу контейнера. Я во флэш вообще не секу. Читаю документацию и не пойму, каким образом взаимодействует контейнер с моим iframe-приложением.
Сейчас у меня в настройках приложения стоит "Тип приложения - IFrame". Значит, чтоб включить flash-контейнер, надо переключить на "Flash" "с использованием контейнера"?
Откуда вызывать метод saveWallPost?
Аватара пользователя
Guard-x
Сообщения: 7
Зарегистрирован: 28 окт 2010, 00:55

Re: Метод постинга на стену

Сообщение Guard-x »

не нужно ничего переключать на Флеш, попробуйте такой пример:

Код: Выделить всё

VK.api("wall.savePost", { wall_id: "<Ваш id>", post_id:"123", photo_id:"<id уже загруженной фото, например 10125748_186752479 >", message: '<Ваше сообщение>' }, function(data) {      VK.callMethod("saveWallPost", data.response.post_hash);  });
Последний раз редактировалось 112 28 окт 2010, 12:19, всего редактировалось 2 раза.
Причина: Используйте [code=javascript] [/code] для оформления кода.
Аватара пользователя
InsideZ
Сообщения: 9
Зарегистрирован: 22 окт 2010, 14:52

Re: Метод постинга на стену

Сообщение InsideZ »

Guard-x
Спасибо, уже сам до этого дошел. Мне не хватало именно слов "после метода wall.savePost необходимо вызвать внешний метод saveWallPost. Я, видимо, очень невнимательно читал документацию :oops:
Кстати, а без загрузки фото у кого-нибудь получалось отправить сообщение на стену?
Ответить