Добавить комментарий - CodeHelper

Добавить комментарий

У ВКонтакте есть два класса API:

  • Open API (javascript).
  • Обычные API (не javascript).

На чистом Open API по сути можно сделать только авторизацию пользователя. Всё остальное делается на олдскульном API. Чтобы вызывать методы обычного API в Javascript Open API предусмотрен специальный мост.

Итак, если произведена инициализация:

<div id="vk_api_transport"></div>
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript" charset="windows-1251"></script>
<script type="text/javascript">
  VK.init({
    apiId: ВАШ_API_ID,
    nameTransportPath: "<путь от корня сайта>/xd_receiver.html"
  });
</script>

...и авторизация пользователя:

VK.Auth.login(function(response) {
  if (response.session) {
    /* Пользователь успешно авторизовался */
    if (response.settings) {
      /* Выбранные настройки доступа пользователя, если они были запрошены */
    }
  } else {
    /* Пользователь нажал кнопку Отмена в окне авторизации */
  }
});

То можно использовать мост для вызова API. Этот мост представлен объектом VK.Api. Пример использования:

VK.Api.call('getVariable', {key: 1281}, function(r) {
  if(r.response) {
    alert('Привет, ' + r.response);
  }
});

Именно метод VK.Api.call используется для вызова любого метода стандартного (не Open) API. Для запроса персональных данных (в примере запрашивается имя, фамилия, никнейм, дата рождения) можно использовать такой код:

function getUserProfileData(uid) {
    var code;
    code = 'return {'
    code += 'me: API.getProfiles({uids: "' + uid + '", fields: "first_name, last_name, nickname, bdate"})[0]';
    code += '};';
    VK.Api.call('execute', { 'code': code }, getUserProfileDataCallback);
}

function getUserProfileDataCallback(data) {
    data.response.me.first_name; // имя
    data.response.me.last_name;  // фамилия
    data.response.me.nickname;   // никнейм
    data.response.me.bdate;      // дата рождения
}
Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.