Vkontakte API: постинг сообщений на стену (wall.post) из приложения

4,519 views
Skip to first unread message

Iliya S.

unread,
Dec 26, 2013, 7:32:58 AM12/26/13
to ror...@googlegroups.com
Здравствуйте!
Зарегистрировал вконтакте приложение (как вебсайт), мне необходимо заправшивать у пользователя разрешения писать сообщения ему на стену и его друзьям от его имени через приложение.
Авторизую пользователя с помощью omniauth-vkontake, в настройках в scope добавил wall.
Проблема в том, что вконтакте несмотря на scope wall не добавляет. он добавляет запрос разврешений wall только если redirect_uri я указываю api.vk.com/blank.html и домен api.vk.com,  но тогда авторизация перенаправляет на пустую страницу. 
Как быть? Мне нужна и нормальна работающая авторизация, и возможность постить на стену по запросу пользователя.

wall_post_box, но просто по ссылке кнопка Post не нажимается. (но когда такая форма вызывается, например, в игре вконтакте, этот способ работает хорошо)
Сайт surfingbird.ru , например, показывает это окно при регистрации через VK, но там всё работает, кнопка Post нажимается, хотя он и не запрашивает разрешений у меня(у пользователя), как это сделано?


Какой сейчас правильный способ существует постинга на стену?
 

Ivan Puchkov

unread,
Dec 26, 2013, 11:35:58 PM12/26/13
to ror...@googlegroups.com
Я реализовывал это через VK Open Api

init_share_to_vk_wall = (owner_id, message, attachments) ->
     VK.init({apiId: app_id})
     VK.Api.call('wall.post', { owner_id: owner_id, message: message, attachments: attachments }, (r) ->
       r
     )

Насколько я понял, постить на стену через стандартное API можно только через Standalone проложения, либо через JS библиотеку.

четверг, 26 декабря 2013 г., 19:32:58 UTC+7 пользователь Iliya S. написал:

Iliya S.

unread,
Dec 27, 2013, 8:44:27 AM12/27/13
to ror...@googlegroups.com
Спасибо. А куда инициацию вконтактовского OpenAPI вставлять? 
Я аналогично сейчас пробую сделать с фейсбуком, там есть вариант с jquery. вот только сам jquery (и остальные скрипты) у меня внизу страницы загружаются, не в хеде. 
Что мне непонятно: 

    $(document).ready ->
      $.ajaxSetup cache: true
      $.getScript "//connect.facebook.net/en_UK/all.js", ->
        FB.init appId: "1384877741741160"
        $("#loginbutton,#feedbutton").removeAttr "disabled"
        FB.getLoginStatus updateStatusCallback
        FB.ui
          method: "apprequests"
          message: "My Great Request"
        , requestCallback
        
      alert "FB JS SDK initiated!"

Пишу так - код работает (инициализирует один раз при старте приложения - это норм? или нужно на каждой странице инициализировать? у меня там Chaplin, jQuery, RequireJS...)
Алерт проходит, в консоли ошибка Uncaught ReferenceError: updateStatusCallback is not defined

Ок. Пишу так:
    $(document).ready ->
      $.ajaxSetup cache: true
      $.getScript "//connect.facebook.net/en_UK/all.js", ->
        FB.init appId: "1384877741741160"
        $("#loginbutton,#feedbutton").removeAttr "disabled"
        FB.getLoginStatus updateStatusCallback
      
      FB.ui
        method: "apprequests"
        message: "My Great Request"
      , requestCallback
        
      alert "FB JS SDK initiated!"

бах! FB is undefined - ошибка в консоли, никакого алерта

Что я сделал не так? 
И хотелось бы увидеть пример кода как этот код вызывается:
init_share_to_vk_wall = (owner_id, message, attachments) ->
     VK.init({apiId: app_id})
     VK.Api.call('wall.post', { owner_id: owner_id, message: message, attachments: attachments }, (r) ->
       r
     )

? он на кнопку привязан? как?


четверг, 26 декабря 2013 г., 16:32:58 UTC+4 пользователь Iliya S. написал:

Sergey Novikov

unread,
Dec 27, 2013, 1:39:26 PM12/27/13
to ror...@googlegroups.com
А почему бы не воспользоваться гемом?


четверг, 26 декабря 2013 г., 16:32:58 UTC+4 пользователь Iliya S. написал:
Здравствуйте!

Ivan Puchkov

unread,
Dec 27, 2013, 10:03:51 PM12/27/13
to ror...@googlegroups.com

Через данный гем нельзя постить на стену.

Я подрубал прям в layouts <%= javascript_include_tag 'http://vk.com/js/api/openapi.js' %>, а дальше на onclick кнопки вешал вызов функции.

суббота, 28 декабря 2013 г., 1:39:26 UTC+7 пользователь Sergey Novikov написал:

stickz

unread,
Jan 12, 2014, 5:57:03 AM1/12/14
to ror...@googlegroups.com
с чего вы взяли, что нельзя постить на стену?
накидал маленький пример, как можно постить на стену.
https://github.com/istickz/vk-poster

суббота, 28 декабря 2013 г., 9:03:51 UTC+6 пользователь Ivan Puchkov написал:

stickz

unread,
Jan 13, 2014, 4:18:33 PM1/13/14
to ror...@googlegroups.com
ссори, для сайтов никак не запостить. Нужно искать другие решения либо писать самому.

воскресенье, 12 января 2014 г., 16:57:03 UTC+6 пользователь stickz написал:

Iliya S.

unread,
Jan 21, 2014, 3:55:55 AM1/21/14
to ror...@googlegroups.com
Решение было найдено только через OpenApi(javascript). Причем в официальных доках было сказано, что этот способ не работает для сайтов на одном языке, на другом языке такого не сказано. В итоге, работает.


четверг, 26 декабря 2013 г., 16:32:58 UTC+4 пользователь Iliya S. написал:
Здравствуйте!
Reply all
Reply to author
Forward
0 new messages