Как стать автором
Обновить

Комментарии 20

Хранимые процедуры и execute — это не одно и то же. VK.API.execute — это метод, позволяющий выполнить код на стороне сервера ВКонтакте, при этом бонусом идёт то, что можно связать несколько разных запросов к их API в одну команду. А хранимая процедура — это код, который изначально вы сохраняете в ВК. Вызывается он командой execute.ИМЯ_ПРОЦЕДУРЫ.
… вычитывать access_token на клиенте и делать AJAX POST на сервер и после этого его свободно использовать...

Каким образом, если авторизация работает только если redirect_uri = oauth.vk.com/blank.html?
не только, можно и на свой redirect_url… http:://REDIRECT_URL#access_token=TOKEN&user_id=USER_ID, т.е. данные передаются через хеш тег (а не квери стринг), поэтому на своей клиентской стороне доступиться.
Я проверил перед написанием комментария, в ошибке было указано что разрешено только для oauth.vk.com/blank.html
а я пробую в приложении и все работает, в настройках моего ВК приложения есть 'адрес сайта' = http://localhost:3001

получаю колбек, на такой вот урл

http://localhost:3001/api/networks/vk/callback#access_token=0658236d51cb473d27cfcbce59b4881cb12781f1f8596929d6c2e83cd1624471b1e4f041480bc2d439b89&expires_in=0&user_id=5696499&state=abe@local.com

вычитывать access_token на клиенте и делать AJAX POST на сервер и после этого его свободно использовать…



… Но всевозможные «обходы» и «хаки» это не то, как бы мы хотели строить свой продукт.


Тут я пожалуй поменяю свое мнение — это реальный воркэраунд в нашел случае… Я еще раз проверю и это возможно выход и поддержка ВК таки будет :)
Раньше такое работало, но где-то с конца прошлого года перестало: с тех пор токен для Standalone-приложений можно использовать только с того IP-адреса, с которого был сделан запрос о его выдаче.

Сейчас на всякий случай попробовал ещё раз, возвращается ошибка с таким сообщением:

"error_msg":"User authorization failed: access_token was given to another ip address."
Все верно… и комментарий от artishok правильный… даже если получить токен таким способом, при реквесте получаю такую ошибку…

{ error:
   { error_code: 20,
     error_msg: 'Permission to perform this action is denied for non-standalone applications: you should request token using blank.html page',
     request_params: [ [Object], [Object], [Object], [Object], [Object] ] } }


к сожалению воркэраунд не пройдет…
Токен то вы получите, но он не будет приниматься. Вот ссылка для проверки приложения. Редирект на страницу, которая с полученным токеном обращается к апи вк и ответ отображает в консоли. Посмотрите.
кстати, нашел как одно из приложений обходит эту проблему: time2post.ru/about
Видимо, это единственный способ. Но даже так лучше, чем никак =)
Мы тоже использовали этот хак, но в правилах VK есть упоминание о том, что запрещено просить пользователя копипастить что-то, во время авторизации, так что (
«Поставив себе цель, порадовать наших пользователей на этой неделе», но подумав мы решили всё таки не напрягаться…
Сделайте приложение в качестве подключенного сайта, используйте redirect_uri на свой домен, в хэше будет access_token. Сохраняете для текущего юзера, получаете профит
Ну вконтакте можно понять, а вдруг у кого-то хардпорн налайкан :)
Ко мне после упомянутого вами поста время от времени стучатся в Skype те или иные хаброжители с просьбой помочь разобраться с API ВК. Иногда вопросы нехитрые, иногда довольно сложные. Буквально пару дней назад спрашивали, например, как получить прямую ссылку на видео-файл. Ответ: никак, если у вашего приложения нет привилегии прямой авторизации, которая, на минуточку, кроме упомянутой вами в посте небезопасности, требует еще и одобрения со стороны администрации ВК.

Много там всяких ограничений и неочевидных нюансов. Поэтому я с опытом пришел к такому принципу: если работаешь с API ВК, будь готов, что то, что ты задумал, будет преднамеренно невозможно выполнить. Увы.
Это очень не правильно, как по мне… немного повторюсь, но имея опыт со всякими API, именно ВК оказался самым не очевидным и ограниченными. Это не очень здорово, для сторонних разрабочиков и для платформы. Я так понимаю, основной упор идет на приложения ВК (flash, iframe) но не на клиентские/веб приложения.

Хотя и не думаю, что администрацию ВК это сильно волнует… к сожалению. А прямая авторизация это совсем не решение…
Да, все так и есть. Через год после публикации того моего поста можно смело утверждать, что он привел к… ничему. Есть у парней из ВК еще одна интересная особенность при разработке API: никто не знает, чем они занимаются и что планируют выпустить / запилить. Есть только changelog, изменения в котором появляются постфактум. Запустили биржу для пабликов — класс. Будет ли API? Загадка. Хотя спрос есть. Этакая собака на сене, короче.
Собака Дурова же.
Всевозможные «обходы» и «хаки» — это зло, не спорю. Но честно говоря, если они — это единственное, что возможно сделать, то надо делать.

Я сам помню, как долбился об Outlook, весь аддон, который моя команда в итоге выплюнула, это был сплошной костыль. Но работает уже два года, какие-то клиенты им пользуются, и для бизнеса это самое важное.

С другой стороны, я бы мог сказать, что задача не решаема без использования «обходов» и «хаков». Наверное, мой бонус был бы меньше, а компания не продала тем клиентам комплекс ПО.

Меня этот вопрос очень интересует, и для себя я давно всё решил, что шоу должно продолжаться, но интересно как в этом случае поступают другие люди.
Вы могли заметить в коментах выше, что уже передумал по поводу «зла и костылей», но к сожалению этот вариант тоже не сработал. А так, я с Вами польностью согласен — шоу должно продолжатся, вне зависимости от обстоятельств!
Зарегистрируйтесь на Хабре , чтобы оставить комментарий