База пользователей приложения

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
maksimn
Сообщения: 59
Зарегистрирован: 26 мар 2011, 10:46

Re: База пользователей приложения

Сообщение maksimn »

А как сделать добавление города в базу?

Делаю так:

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

 <script type="text/javascript" charset="utf-8">$(document).ready(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'];    var auth_key = flashVars['auth_key'];       VK.api("getProfiles", {uids:viewer_id,fields:"photo_medium_rec,bdate,sex,city"}, function(data) {// Заношу в переменную id города    var city = data.response[0].city;// Определяю городVK.api("places.getCityById", {cids:city}, function(data) {    var city_name = data.response[0].name;    });// Город получен. Дальше нужно передать скрипту reg.php данные для занесение в базу. Но как это сделать?    if(data.response) {          $.post("/reg.php", { 'viewer_id': viewer_id, 'auth_key': auth_key, 'first_name': data.response[0].first_name, 'last_name': data.response[0].last_name, 'photo_big': data.response[0].photo_medium_rec, 'bdate': data.response[0].bdate, 'sex': data.response[0].sex  });}     });    });     });     </script> 
Как передать город?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: База пользователей приложения

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

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

VK.api("places.getCityById", {cids:city}, function(data) {    // результат вызова метода places.getCityById доступен в этом месте. Логично, что обрабатывать надо здесь    if(data.response) {        var city_name = data.response[0].name;        $.post("/reg.php",{'city': city_name});    }});
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Re: База пользователей приложения

Сообщение ukhov »

а как с сервера зная uid пользователя вк узнать всю информацию о пользователе (getProfiles » fields). в уроке получения имени, фамилиии и аватара просто подставляешь из этого списка соответствующие "переменные" (не знаю как сказать):
uid, first_name, last_name, nickname, domain, sex, bdate (birthdate), city, country, timezone, photo, photo_medium, photo_big, has_mobile, rate, contacts, education, online.
а если запросить город, ник, пол, страну, рейтинг и т.д., то возвращает undefined
maksimn
Сообщения: 59
Зарегистрирован: 26 мар 2011, 10:46

Re: База пользователей приложения

Сообщение maksimn »

Александр, это я уже понял. Мне нужно, чтобы отправлялись и личный данные (имя, фамилия, фото, дата, рождения, пол и другое), и город (название). Но как это сделать?

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

VK.api("getProfiles", {uids:viewer_id,fields:"photo_medium_rec,bdate,sex,city"}, function(data) {// ЗДЕСЬ ОСУЩЕСТВЛЯЮТСЯ ДЕЙСТВИЯ С ПОЛУЧЕННЫЙМИ ДАННЫМИ МЕТОДА getProfiles    var city = data.response[0].city;// Определяю городVK.api("places.getCityById", {cids:city}, function(data) {// ЗДЕСЬ ОСУЩЕСТВЛЯЮТСЯ ДЕЙСТВИЯ С ПОЛУЧЕННЫЙМИ ДАННЫМИ МЕТОДА getCityById"    var city_name = data.response[0].name;    });    if(data.response) {          $.post("/reg.php", { 'viewer_id': viewer_id, 'auth_key': auth_key, 'first_name': data.response[0].first_name, 'last_name': data.response[0].last_name, 'photo_big': data.response[0].photo_medium_rec, 'bdate': data.response[0].bdate, 'sex': data.response[0].sex  });}     });


ukhov, вот код

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

    VK.api("getProfiles", {uids:viewer_id,fields:"photo_medium_rec,bdate,sex,city,rate"}, function(data) {// имя    document.getElementById('first_name').innerHTML = data.response[0].first_name;// фамилия    document.getElementById('last_name').innerHTML = data.response[0].last_name;// дата рождения    document.getElementById('bdate').innerHTML = data.response[0].bdate;// пол    document.getElementById('bdate').innerHTML = data.response[0].sex;     });
У меня возвращает нормально. Может быть данные скрыты или не указаны?
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Re: База пользователей приложения

Сообщение ukhov »

maksimn
попробуй получить ник, рейтинг
maksimn
Сообщения: 59
Зарегистрирован: 26 мар 2011, 10:46

Re: База пользователей приложения

Сообщение maksimn »

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

Re: База пользователей приложения

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

maksimn
Тебе данные надо отправить когда ты выполнишь метод places.getCityById ? Тогда почему ты отправляешь их в независимости от того выполнится ли этот метод? Нужно внутри функции выполнять...

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

    VK.init(function() {        VK.api("getProfiles", {uids:viewer_id,fields:"photo_medium_rec,bdate,sex,city"}, function(data) {            var city = data.response[0].city;                        if(data.response[0].city) { // если ответ от сервера нормальный, то только в этом случае узнаём город                VK.api("places.getCityById", {cids:city}, function(data_city) { // data поменял                if(data_city.response) {                    // если getCityById выполнился нормально                    alert(data_city.response[0].name); // !!! data_city - из данных полученных от запроса getCityById,                    alert(data.response[0].first_name); // !!! data - из данных полученных от запроса getProfiles                }                });            }                        /* то что выполняется здесь, не будет ждать пока выполнится VK.api("places.getCityById"), кроме этого если getCityById уже начнет выполняться, то function(data) сотрет data, которые получили в VK.api("getProfiles")            Либо менять data на разные, либо сохранять нужные данные из старой data в переменные, как сделал это с var city = data.response[0].city;            В моём коде можно обойтись без это записи city в переменную.            */        });    });
И тебе самому удобно работать с неотформатированным кодом? Мне вот не очень хочется его форматировать, чтобы было проще увидеть ошибку и помочь...
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: База пользователей приложения

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

Ответить