Задать вопрос
@Mox
Team Lead, RoR, React/React Native

Авторизация iframe приложений ВКонтакте

Проблема такая — iframe приложение получает от вконтакте token, но он валиден только при работе с JS API через браузер. При попытке использовать API с сервера я получаю соообщение о несоответствии IP адресов

Вопрос такой — какой корректный способ дергать API с сервера в iframe приложении? Нужна ли авторизация как для сайта? Или только JS предполагается использовать?

Что такое «авторизация cервера приложения?» — можно ли только с помощью ее делать запросы по получению информации о текущем юзере?

P.S. Использую gem vkontakte_api
  • Вопрос задан
  • 7749 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
unconnected
@unconnected
Недавно с ним боролся, касательно iframe приложений: корректный (с точки зрения вк способ) это jsonp. Дальше немного кода и ваш сервер получит все, что нужно через клиента.
Авторизация сервера приложений — чуть-чуть не то, вы сможете получить весьма ограниченные возможности воздействия на пользователей уже использующих ваше приложение (послать им сообщение, оповещение, посчитать кол-во).
Чтобы сервер мог достучаться до конкретного пользователя нужно регестрировать стэнд-элоун приложение и авторизовать пользователя через свой сервер, (применяя мощное колдунство по обходу защиты вконтактика). Данный способ хоть и дает возможность управлять практически всеми доступными пользователя, но является некорректным. Использовать его надо вдумчиво и без фанатизма — иначе вк от вас защитится, заблокировав все ваши приложения, а может и вас.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rasstroen
@rasstroen
Есть серверные запросы в апи, они не требуют авторизации по пользователю, но их немного. Определяются методом тыка (любой запрос, типа wall.get, пробуем — получается, значит доступен как серверный)

Для использования достаточно секретного ключа.

$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('wall.get', array('extended' => 1,'owner_id' => '-' . $gid, 'offset' => 0, 'count' => 5));
 foreach ($resp['response']['wall'] as $photo) {
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы