Часто начинающие пытаются использовать все методы ВКонтакте 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