Страница 1 из 4

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

Добавлено: 26 окт 2010, 11:27
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');        }    })} 

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

Добавлено: 27 окт 2010, 17:22
altermann
так а где вызов метода saveWallPost ? Оно как раз и открывает окошко сохранения поста на стену:

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

Загрузка изображения на стену пользователя

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

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

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

Добавлено: 27 окт 2010, 19:56
altermann
хотя не надо, уже написал =)

прекрасно работает, кстати, этот код, просто добавь метод, который сохраняет запись.

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

Добавлено: 27 окт 2010, 20:58
Doker
Сделай урок. Получиш много благодарностей )

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

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

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

Добавлено: 28 окт 2010, 01:17
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 );                 });             }       });
Надеюсь Вы мне поможете разобраться...

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

Добавлено: 28 окт 2010, 11:56
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?

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

Добавлено: 28 окт 2010, 12:17
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);  });

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

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