Вставка ответа в дизайн приложения на запрос. IFrame

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
tiN
Сообщения: 16
Зарегистрирован: 12 ноя 2010, 18:53

Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение tiN »

Привет всем!

Почитав часть тем на этом форуме понял, что тут сидят прошаренные парни, и подумал, что быть может тут мне помогут.

Постараюсь как можно понятливее написать суть вопроса.

Приступаем...

Итак. При создании IFrame приложения ВКонтакте требуется выводить краткую информацию о пользователе, который просматривает это приложение.

Всего-навсего нужно выводить имя и фамилию пользователя и его уменьшенную фотографию. Начал рыться в методах ВКонтакте API. Нашел, наверно то, что нужно: Метод getUserInfoEx. Всё бы замечательно, но я настолько уныл, что не знаю как вывести эти данные и вставить их в шаблон приложения.

Делая каким то чудом запрос к API — на удивление получаю правильный ответ, без ошибок (конечно, не без помощи Олега Илларионова).

Казалось бы... что ещё от жизни нужно?

Но беда заключается вот в чём: Этот самый ответ я получаю в диалоговом окне, в таком виде:

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

{"response":{"user_id":"6492","user_name":"Andrew Rogozov","user_sex":"2","user_bdate":"11.11.1987","user_city":"Санкт-Петербург","user_photo":"http:\/\/cs537.vkontakte.ru\/u06492\/a_ed926bbb.jpg"}}
И, блин сижу второй день и никак не соображу, что делать дальше...

Ближе к делу...

Весь этот ответ мне нафиг не нужен. Нужно (как я упоминал выше) имя, фамилия и уменьшенная фотография пользователя. Точь в точь как на durov.am.

Вот и всё.

Заранее спасибо, за желательно полный и подробный ответ.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение Александр »

tiN
getUserInfoEx - это устаревший метод. Какой смысл использовать его? Используй getProfiles.
И посмотри урок IFrame-приложение ВКонтакте. Вывод информации о пользователе.
Аватара пользователя
jagger
Сообщения: 114
Зарегистрирован: 28 июл 2010, 13:26

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение jagger »

tiN писал(а): выводить имя и фамилию пользователя и его уменьшенную фотографию.
Вывод [Имя, Фамилия, Фото 50px]

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

VK.api('getProfiles',{uids: ''+viewer_id+'', fields: 'photo', name_case: 'nom'}, function(data) {document.getElementById('results').innerHTML = document.getElementById('results').innerHTML + <img src='+ data.response[0].photo +' />Имя:<a target="_blank" href="http://vkontakte.ru/id' + data.response[0].uid + '">' + data.response[0].first_name + '</a>Фамилия:<a target="_blank" href="http://vkontakte.ru/id' + data.response[0].uid + '">' + data.response[0].last_name + '</a>;});
Логично менять размер фото можно заменив в коде лишь:

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

fields: 'photo',data.response[0].photo
50px

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

fields: 'photo_medium',data.response[0].photo_medium
100px

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

fields: 'photo_big',data.response[0].photo_big
200px
tiN
Сообщения: 16
Зарегистрирован: 12 ноя 2010, 18:53

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение tiN »

jagger, спасибо большое! Но я вставил Ваш код в шаблон и ничего нету. Если не сложно: напишите код, который можно вставить и всё заработает. Почитал урок выше - примерно понял что к чему, но пока не увижу как это всё оформляется - скорее всего и не пойму...
Аватара пользователя
jagger
Сообщения: 114
Зарегистрирован: 28 июл 2010, 13:26

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение jagger »

А ты хоть выводил через? :

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

<div id="results"></div>
Почитай на досуге: http://vkontakte.ru/developers.php?o=-1 ... ript%20API
tiN
Сообщения: 16
Зарегистрирован: 12 ноя 2010, 18:53

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение tiN »

Что то я вообще ничего не понял.

Можешь написать полный код, после добавления его в шаблон я получил эту фотографию и имя пользователя...
Аватара пользователя
jagger
Сообщения: 114
Зарегистрирован: 28 июл 2010, 13:26

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение jagger »

Привожу пример на коде Александра, код рабочий!

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

<html><head><script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script> <script type="text/javascript" charset="cp1251" >window.onload = (function() {      VK.init(function() {          var parts=document.location.search.substr(1).split("&");    var flashVars={}, curr;    for (i=0; i<parts.length; i++) {        curr = parts[i].split('=');         flashVars[curr[0]] = curr[1];    }        var viewer_id = flashVars['viewer_id'];      VK.api("getProfiles", {uids:viewer_id,fields:"photo"}, function(data) {         document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name + '<br />';         var image=document.createElement('img');         image.src=data.response[0].photo;         user_info.appendChild(image);    });     });});</script></head><body><div id="user_info">http://flapps.ru</div></body></html>
tiN
Сообщения: 16
Зарегистрирован: 12 ноя 2010, 18:53

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение tiN »

Всё равно ничего нету (даже с этим шаблоном. на странице выводится только "http://flapps.ru" и всё.
Аватара пользователя
jagger
Сообщения: 114
Зарегистрирован: 28 июл 2010, 13:26

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение jagger »

Попробуй разрешить все действия приложению (настройки), и заливать файл с кодом в корень сервера. Т.е. Serv://корневая_папка/index.html или *.php

вот примерно как выглядит код, который у меня очень даже работает:

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html id="jagger" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script> <script type="text/javascript" charset="cp1251" >window.onload = (function() {     VK.init(function() {       var parts=document.location.search.substr(1).split("&");    var flashVars={}, curr;    for (i=0; i<parts.length; i++) {        curr = parts[i].split('=');        flashVars[curr[0]] = curr[1];    }    var viewer_id = flashVars['viewer_id'];    VK.api('getProfiles',{uids: ''+viewer_id+'', fields: 'nickname, sex, bdate, city, photo, online, rate', name_case: 'nom'}, function(data) {document.getElementById('results22').innerHTML = document.getElementById('results').innerHTML = document.getElementById('results').innerHTML + '<div style="background:#fff;border:1px solid #dae2e8;padding:5px;"><table><tr><td style="padding-right:10px;" align="left"> <a target="_blank" href="http://vkontakte.ru/id' + data.response[0].uid + '"><img src='+ data.response[0].photo +' /></a> </td><td><table><tr><td style="color:#555;">Имя:</td><td><a target="_blank" href="http://vkontakte.ru/id' + data.response[0].uid + '">' + data.response[0].first_name + '</a></td></tr><tr><td style="color:#555;">Фамилия:</td><td><a target="_blank" href="http://vkontakte.ru/id' + data.response[0].uid + '">' + data.response[0].last_name + '</a></td></tr><tr><td style="color:#555;">ID-страници:</td><td>' + data.response[0].uid + '</td></tr></table></td></tr></table></div>';});});});</script></head><body><div id="results22">Загрузка профиля <img src="http://vk.com/images/upload.gif" border="0"/> © 2010</div></body></html> 
tiN
Сообщения: 16
Зарегистрирован: 12 ноя 2010, 18:53

Re: Вставка ответа в дизайн приложения на запрос. IFrame

Сообщение tiN »

Во! Всё люто заработало!

Но возникла проблема.

Как юзать сессии, что бы переменные не пропадали при переходе на ту или иную страницу

Использовал

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

$_SESSION
Но получалась ерунда :(

Что нужно добавить в

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

<script type="text/javascript" charset="cp1251" >window.onload = (function() {      VK.init(function() {          var parts=document.location.search.substr(1).split("&");    var flashVars={}, curr;    for (i=0; i<parts.length; i++) {        curr = parts[i].split('=');         flashVars[curr[0]] = curr[1];    }        var viewer_id = flashVars['viewer_id'];      VK.api("getProfiles", {uids:viewer_id,fields:"photo"}, function(data) {         document.getElementById('user_info').innerHTML = data.response[0].first_name + ' ' + data.response[0].last_name + '<br />';         var image=document.createElement('img');         image.src=data.response[0].photo;         user_info.appendChild(image);    });     });});</script>
Ответить