Close

22.02.2015

Доступ к API ВКонтакте со своего сервера (ограничения)

С дипломником из СКБ ИТ мы разрабатываем интересное приложение, которое позволит собирать различные данные из ВКонтакте и визуализировать их. Похожие задумки уже давно реализовывались (пример1, пример2, пример3), но мы хотим сделать более инструментальное, более общее приложение, не заточенное под конкретную задачу. По сути мы будем рассматривать ВК как источник данных и разработаем инструмент, позволяющий просто (высокоуровнего) отправлять запросы к этому хранилищу данных, делать обработку результатов запросов и легко визуализировать все это дело.

Идея родилась еще в 2012 г. (старая презентация здесь)

Первый вопрос, с которым мы столкнулись — делать Standalone приложение или web-приложение. Понятно дело, что web-приложение выглядит интереснее (моднее что ли), но у Standalone намного больше прав (об этом разграничении можно почитать здесь и здесь). Правда насколько намного это «намного больше прав» из документации на API было не понятно. Тем более, что ВК недавно обновили документацию и чтобы узнать какие методы доступны только Standalone приходиться заходить в описание каждого метода, что не удобно.

Я загрузил wget’ом все описания методов и в поиском отсеял те описания, в которых встречается строка «Данный метод доступен только Standalone-приложениям». Итоговый список под катом. Возможно кому-то он будет полезен.

Методы, которые доступны только Standalone приложениям:

account.banUser
account.changePassword
account.getBanned
account.getInfo
account.getProfileInfo
account.getPushSettings
account.importContacts
account.lookupContacts
account.registerDevice
account.saveProfileInfo
account.setInfo
account.setOffline
account.setOnline
account.setSilenceMode
account.unbanUser
account.unregisterDevice

apps.deleteAppRequests
apps.getFriendsList
apps.sendRequest

auth.restore (только Прямая авторизация)

board.addComment
board.addTopic
board.closeTopic
board.deleteComment
board.deleteTopic
board.editComment
board.editTopic
board.fixTopic
board.openTopic
board.restoreComment
board.unfixTopic

fave.addGroup
fave.addLink
fave.addUser
fave.getLinks
fave.getPhotos
fave.getPosts
fave.getUsers
fave.getVideos
fave.removeGroup
fave.removeLink
fave.removeUser

friends.add
friends.addList
friends.delete
friends.deleteAllRequests
friends.deleteList
friends.edit
friends.editList
friends.getByPhones
friends.getLists
friends.getRequests
friends.getSuggestions

gifts.get

groups.addLink
groups.approveRequest
groups.banUser
groups.create
groups.deleteLink
groups.edit
groups.editLink
groups.editManager
groups.editPlace
groups.getBanned
groups.getInvitedUsers
groups.getInvites
groups.getRequests
groups.getSettings
groups.invite
groups.join
groups.leave
groups.removeUser
groups.reorderLink
groups.unbanUser

likes.add
likes.delete
likes.isLiked

messages.addChatUser
messages.createChat
messages.delete
messages.deleteChatPhoto
messages.deleteDialog
messages.editChat
messages.get
messages.getById
messages.getChat
messages.getChatUsers
messages.getDialogs
messages.getHistory
messages.getLastActivity
messages.getLongPollHistory
messages.getLongPollServer
messages.markAsImportant
messages.markAsNew
messages.markAsRead
messages.removeChatUser
messages.restore
messages.search
messages.searchDialogs
messages.send
messages.setActivity
messages.setChatPhoto
newsfeed.addBan
newsfeed.deleteBan
newsfeed.deleteList
newsfeed.getBanned
newsfeed.getComments
newsfeed.getLists
newsfeed.ignoreItem
newsfeed.saveList
newsfeed.unignoreItem
newsfeed.unsubscribe

notes.createComment
notes.deleteComment
notes.editComment
notes.restoreComment

photos.confirmTag
photos.copy
photos.createComment
photos.delete
photos.deleteAlbum
photos.deleteComment
photos.editComment
photos.getChatUploadServer
photos.getMessagesUploadServer
photos.getNewTags
photos.getTags
photos.putTag
photos.removeTag
photos.report
photos.reportComment
photos.restore
photos.restoreComment
photos.saveMessagesPhoto
places.checkin

polls.addVote
polls.create
polls.deleteVote
polls.edit
polls.getById

search.getHints

stats.trackVisitor

status.set

users.getNearby
users.report

video.report
video.reportComment

wall.addComment
wall.delete
wall.deleteComment
wall.edit
wall.editComment
wall.pin
wall.post (Данный метод доступен только Standalone-приложениям и web-приложениям, использующим окно подтверждения.)
wall.reportComment
wall.reportPost
wall.repost
wall.restore
wall.restoreComment
wall.unpin

Это открытые методы, не требующие access_token (из веб-приложений работают)

Про эти методы написано в документации: «Если метод работает с информацией, доступной в основной версии сайта без авторизации пользователя (например, имя пользователя с заданным id), для его вызова не требуется передача access_token. Такие методы называются открытыми, к ним относится, например, users.get

apps.get
apps.getCatalog

auth.checkPhone
auth.confirm
auth.restore
auth.signup

board.getComments
board.getTopics

database.getChairs
database.getCities
database.getCitiesById
database.getCountries
database.getCountriesById
database.getFaculties
database.getRegions
database.getSchoolClasses
database.getSchools
database.getStreetsById
database.getUniversities

friends.get

groups.getById
groups.getMembers
groups.isMember

leads.checkUser
leads.complete
leads.getUsers
leads.metricHit
leads.start

likes.getList

newsfeed.search

pages.clearCache

photos.get
photos.getAlbums
photos.getById
photos.search

users.get
users.getFollowers
users.getSubscriptions

utils.checkLink
utils.getServerTime
utils.resolveScreenName

wall.get
wall.getById
wall.getComments
wall.getReposts
wall.search

widgets.getComments
widgets.getPages

Эти методы не требуют прав доступа (но требуют access_token, из веб-приложений работают)

Про эти методы написано в документации: «Если на странице с описанием сказано, что метод не требует прав доступа, это означает, что для его вызова достаточно простой авторизации без специального scope, однако параметр access_token должен присутствовать в запросе.»

account.getActiveOffers
account.getAppPermissions
account.getCounters
account.setNameInMenu

audio.getBroadcastList

execute

groups.get
groups.search

newsfeed.getSuggestedSources

pages.getVersion
pages.parseWiki

photos.getAlbumsCount
photos.getOwnerPhotoUploadServer
photos.getProfile
photos.getUserPhotos
photos.saveOwnerPhoto
photos.saveProfilePhoto
photos.saveWallPhoto

places.add
places.getById
places.getCheckins
places.getTypes
places.search

polls.getVoters

stats.get

storage.get
storage.getKeys
storage.set

users.isAppUser
users.search

wall.savePost

Нужно обратить внимание, что веб-приложениям также не доступны те методы, которые требуют права доступа «wall». Поскольку в списке прав доступа указано: «Доступ к обычным и расширенным методам работы со стеной.  Внимание, данное право доступа недоступно для сайтов (игнорируется при попытке авторизации).«.

Таким образом, веб-приложениям доступно большинство get-методов, не доступны set-методы, ограничена работа с сообщениями. На мой взгляд тут нет ничего страшного и не разумного, а для нашего приложения визуализации вполне подходит.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *