Работа с методами ВКонтакте API на стороне клиента и сервера

Готовые уроки IFrame + ВКонтакте API
Ответить
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Работа с методами ВКонтакте API на стороне клиента и сервера

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

Работа с методами ВКонтакте API на стороне клиента и сервера

Часто начинающие пытаются использовать все методы ВКонтакте API с сервера (PHP).
В этой статье я опишу почему при создании Flash/IFrame-приложений не все методы можно вызывать с сервера и как определить можно ли вызвать конкретный метод API с сервера.

Изображение

Существует 2 способа взаимодействия с ВКонтакте API:
1. На стороне клиента (JavaScript)
2. На стороне сервера (PHP и др. серверные языки)

Некоторые методы можно вызывать только на стороне клиента, а некоторые только на стороне сервера. Большинство методов ВКонтакте API можно использовать только на стороне клиента.


Почему не все методы можно вызвать на стороне клиента
Со стороны клиента нельзя вызывать secure.* методы. Эти методы нужно вызывать только с сервера, потому что вызывать их со стороны клиента не безопасно. Злоумышленник сможет получить доступ к балансу приложения, возможность отправлять уведомление пользователям и другие секретные данные.


Почему не все методы можно вызвать с сервера
При авторизации пользователя ВКонтакте, в браузере пользователя храниться информация, по которой сайт ВКонтакте идентифицирует пользователя.
Сервер (хостинг) - это не компьютер пользователя. Это отдельный компьютер. На нем не хранится информация пользователя. Вызывая методы API с сервера, сайт ВКонтакте не может идентифицировать пользователя.
Если метод работает с какими-то данными конкретного пользователя, то API должно знать с данными какого пользователя нужно работать. Если в методе есть параметр для передачи ID пользователя, то можно попробовать вызвать метод с сервера.

Доступен ли метод с сервера можно узнать, прочитав документацию или попробовав его вызвать. Но если в документации не описана возможность вызывать метод с серверной стороны, то со временем он может перестать работать с сервера.
Если при вызове метода с сервера вы получаете ответ:

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

[error_code] => 3[error_msg] => Unknown method passed
то метод не работает с сервера.

Пример вызова метода с сервера можно посмотреть в уроке Вызов серверных методов (APIServerPHPClass).


Методы, вызываемые со стороны клиента

Все методы ВКонтакте API, кроме secure.* методов


Методы, вызываемые с серверной стороны

Официально (описано в документации):
secure.*
friends.get

Неофициально:
isAppUser
users.get
getUserSettings
likes.getList
groups.getById
groups.isMember
photos.getAlbums
photos.get
wall.get
wall.getById
newsfeed.search
storage.get
storage.set
getServerTime
Ответить