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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
silent
Сообщения: 5
Зарегистрирован: 09 фев 2014, 22:56

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

Сообщение silent »

На хостинге iframe-приложения лежит фотка, которую нужно запостить на стену пользователя. wall.post.attachments принимает только фотки уже запощенные вконтакт. PHP на сервере нет, только статика. Никакие фотки не генерятся. Фотка уже есть, нужно просто вывести в приложении окно постинга картинки. Как реализовать такой вариант? Ничего подобного не нашел или не дошло...
cibersant
Сообщения: 199
Зарегистрирован: 23 окт 2011, 18:34

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение cibersant »

Катани фотку в контакт,и через яваскрипт пости на стену.
silent
Сообщения: 5
Зарегистрирован: 09 фев 2014, 22:56

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение silent »

Так эта фотка будет одним объектом с общими комментариями и проч. Так же можно будет посмотреть все фотки в альбоме рядом с ней. Не катит. Нужно, чтобы фотка стала отдельным экземпляром для конкретного пользователя.

По идее должны работать методы:
http://vk.com/pages?oid=-1&p=photos.getWallUploadServer
http://vk.com/pages?oid=-1&p=photos.saveWallPhoto

Но никакой POST-запрос я обрабатывать не могу, т.к. на сервере нет ПХП. Может быть подсовывать ему сразу json-файл с ответом? Как тогда настроить эти методы?
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение sasha^ »

ответ такой: если нет денег(или жалко) на хост с php - не лезь в разработку приложений! без него защиты не будет.
также и голоса не списать, и рейтинг не сделать.
бери хост с php и не прикалывайся ;)
silent
Сообщения: 5
Зарегистрирован: 09 фев 2014, 22:56

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение silent »

Млин.... Да есть на хосте ПХП. Только зачем нагружать сервак, если нужна статика? + придется кроссдоменный запрос через него проводить, Курл подключать. Слишком много гемора ради каких-то картинок. Можно и на Ноде сделать на том же Хероку, вообще, бесплатно.
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение sasha^ »

как хочешь...) насчет нагрузки - неправда.. у меня хост за 200 рублей выдерживал 2-3кк(и около 4кк в бд) запросов в сутки и ничего.. )

ps. на то и хостинг чтобы его нагружать))) лучше потратить еще пару сотень рублей в месяц и не парится над реализацией, чем месяцами думать как улучшить ее.. только когда затраты на сервера дороже переделки логики - можно подумать над оптимизацией.. я всегда такого мнения придерживался и буду. :)
cibersant
Сообщения: 199
Зарегистрирован: 23 окт 2011, 18:34

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение cibersant »

Не знаю,у меня хост за 2.5 бакса,в приложении 300 чел онлайн.И хост держит.
silent
Сообщения: 5
Зарегистрирован: 09 фев 2014, 22:56

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение silent »

Дело в потраченном времени. Придется пол дня разбираться в тонкостях) Давно с ПХП не работал, тем более запросы на другой домен ни разу не делал
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Добавление изображения со своего хоста на стену пользователя

Сообщение sasha^ »

не долго...) я потратил когда-то был 1 день для того чтобы сделать загрузку изображений в профиль юзеру, потом их прикреплял к wall.post и все... ну еще много чего был сделал в тот день.. потому скажу что не все так сложно..
скажу только что делается через curl, ну и изображения должны быть на твоем сервере(можно вроде и иначе, но мороки еще больше))
ну и кусочек кода отправки... upload_url узнаем на клиенте... правда картинки в бд))) ну я сначала немного тупанул с этим... нужно было просто придумать вариант шифровки строки и все.. клиент бы знал только "хеш", а потом расшифровать.. а я с бд намутил..=)

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

$result = $resp->fetch_assoc();$dir = 'imgs/'.$result['attachment']; if(!file_exists($dir)) exit( json_encode( array("error"=>"no_exit_file") ) ); $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $upload_url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => '@' . $dir));echo curl_exec($ch);curl_close($ch);
у меня приложение было флеш, но в айфрейм.. потому был вот такой код)))
просто нельзя делать валл.пост с загруженой фоткой не с тем объектом VK.)))
потому вот-так вот..

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

         function getWallUploadServer(uid) {            VK.api("photos.getWallUploadServer", {uid:uid}, onGetServer);        }        function onGetServer(data) {            if(data.error) {                thisMovie("guest").photoError();            }            else {                thisMovie("guest").onGetServer(data.response.upload_url);            }        }                function saveWallPhoto(uid,obj) {            VK.api("photos.saveWallPhoto", {uid:uid, server:obj.server, photo:obj.photo, hash:obj.hash}, onWall);        }        function onWall(data) {            if(data.error) {                thisMovie("guest").photoError();            }            else {                thisMovie("guest").onWallOK(data.response[0].id);            }        }////////////////////function wallpost(obj) {            VK.api("wall.post", obj);        }
вот as3:(выкинуть все ненужное)

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

public function loadPhoto(func:Function, uid:Number):void {            if(onWallPhotoId != -1) return;            onWallPhotoOK = func;            onWallPhotoId = uid;            if (ExternalInterface.available) {                ExternalInterface.call("getWallUploadServer", onWallPhotoId);            }        }        private function onGetServer(upload_url:String):void {            Server(server).query(Server.LOAD_PHOTO_WALL, {upload_url:upload_url, photo_url:lastQuest.image_url}, onGetPhoto, photoError);        }        private function onGetPhoto(obj:Object):void {            if(obj.error) {                onWallPhotoId = -1;                return; // ошибка            }            //VK.api("photos.saveWallPhoto", {uid:onWallPhotoId, server:obj.server, photo:obj.photo, hash:obj.hash}, onWallOK, photoError);            if (ExternalInterface.available) {                ExternalInterface.call("saveWallPhoto", onWallPhotoId, obj);            }        }        private function onWallOK(id:String):void {            onWallPhotoId = -1;            onWallPhotoOK(id);            //onWallPhotoOK(obj.id);        }        private function photoError(obj:Object=null):void {            onWallPhotoId = -1;        }////////////////////private function onOk(attachment:String):void {            var obj:Object = Main(game).lastQuest;            if (ExternalInterface.available) {                ExternalInterface.call("wallpost", {message:getMess(), attachments:attachment});            }            function getMess():String {                var s:String = "Помогите! Друзья, что за слово из " + obj.word_length + " букв на этой картинке?\n";                if(obj.help != "0") s += "У меня есть подсказка: " + obj.help + " !\n";                if(obj.geted_leters != "0") s += "И я открыл часть слова: " + obj.geted_leters.join("") + " !\n\n";                s += "Присоединяйтесь к игре!\nhttp://vk.com/app"+Main(game).api_id+"#" + Main(game).viewer_id + "\n";                s += "Возможные буквы: " + obj.all_leters.join(" ");                return s;            }        }
Ответить