Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Sanches
@maksportnyagin
@vk_track = VkTrack.find(params[:id])

`def add
@vk_track = VkTrack.find(params[:id])

begin
  if params[:captcha] && params[:captcha_sid]
    @id = @vk.audio.add(audio_id: @vk_track.vk_id, owner_id: @vk_track.owner_id, captcha_sid: params[:captcha_sid], captcha_key: params[:captcha])
  else
    @id = @vk.audio.add(audio_id: @vk_track.vk_id, owner_id: @vk_track.owner_id)
  end

  respond_to do |format|
    format.html {}
    format.js   {}
    format.json { render json: @vk_track }
  end
rescue VkontakteApi::Error => @e
  if @e.error_code == 14
    respond_to do |format|
      format.js { render 'captcha' }
    end
  else
    raise
  end
end

end`

вот таким макаром сейчас срабатывает капча. Вроде все работает, но мне кажется что можно сделать все красивее. Так ли это?
Vsevolod Romashov
@7even
добрый день. в целом логика правильная, насколько я понимаю. есть смысл завернуть ее в сервисный объект, внутри него ловить ошибку 14, а в контроллере тогда уже будет что-то вроде этого:
@add_audio = AddAudio.new(@vk_track)
@add_audio.call(params[:captcha], params[:captcha_sid]) # в случае без капчи тут придут два nil

if @add_audio.success?
  respond_to do |format|
    format.html {}
    format.js   {}
    format.json { render json: @vk_track }
  end
elsif @add_audio.captcha?
  respond_to do |format|
    format.js { render 'captcha' }
  end
else
  # другая ошибка (не капча)
end
Vladimir Deepsystm
@deepsystm
Добрый день, спасибо за джем -- хорошая работа, хороший вклад в сообщество
Vsevolod Romashov
@7even
Спасибо
Ilya Menshikov
@unkmas
Добрый день! @7even спасибо за гем - он прекрасен :) Есть один вопрос - Oj включен по умолчанию, т.к. в других гемах есть ошибки при парсинге. Собственно вопрос: не помните ли, на каких запросах возникали такие проблемы? Хочу попробовать использовать этот гем под Jruby
Vsevolod Romashov
@7even
@unkmas добрый день. Буквально 10 минут назад смерджил пулл-реквест, добавляющий поддержку JRuby - Oj теперь используется только для платформы MRI. Новой версии пока нет, планирую выпустить на днях, как будет время.
Ilya Menshikov
@unkmas
@7even круто, спасибо!
Julian Nacci
@JulianNacci
Priviet, I am not speaking russian sorry guys. I am new to VK API and try to understand its mechanic by digging in documentation. Currently developing a RoR + React app using soundcloud to stream music, I recently got interested by VK audio API. I created an app through VK dev interface, and try to make query with audio requests / methodes (using an app id and secret) but no wrapper gem.
What I have understood so far is that it is not possible to make any request without an user account id / pwd... (it is possible on Soundcloud for ex), is it right ?
iluxaua
@iluxaua
@JulianNacci yes, you need authorize with your VK account for listening music
YuryNoob
@YuryNoob
День добрый! Как решить проблему с получением токена при серверной реализации метода wall через ваш гем? Проблема в том, что в документации сказано, что право доступа wall недоступно для сайтов (игнорируется при попытке авторизации). Возможно ли получение "вечного токена" методом, описанном вами в статье "Асинхронная работа в ВК" http://7vn.ru/blog/2012/09/09/vkontakte-async/
Vsevolod Romashov
@7even
добрый. да, можно точно так же, если ВК в этом плане ничего не изменили
просто указать другой scope при генерации урла авторизации
должно быть что-нибудь типа VkontakteApi.authorization_url(type: :client, scope: [:wall])
YuryNoob
@YuryNoob
Спасибо попробуем!
@7even получается, что таким методом один раз авторизовался, а потом пользуешься?
YuryNoob
@YuryNoob
Приложение предполагается использовать Standalone
Vsevolod Romashov
@7even
да, нужно получить вечный токен и пользоваться им. type: :client подразумевает, что пойдет клиентская авторизация - она позволяет использовать работу со стеной
YuryNoob
@YuryNoob
Но в клиентской авторизации все равно expires_in=86400. Как его этот метод обходит?
Vsevolod Romashov
@7even
в scope надо добавить еще :offline
scope: [:offline, :wall]
YuryNoob
@YuryNoob
Спасибо большое, как получится проверить отпишусь!
YuryNoob
@YuryNoob
через гем vk api вылетает ошибка #17 -{"error":"need_validation","error_description":"please open redirect_uri in browser","redirect_uri":"https:\/\/oauth.vk.com\/security_check?type=test&mid=66748&hash=23132d8b8744f8b1b2"}
Vsevolod Romashov
@7even
Screen Shot 2016-02-02 at 20.32.14.png
похоже на эту ошибку
chip-and-dail
@chip-and-dail

Здравствуйте.

Скажите, а можно ли публиковать информацию в группу ВК? Я новичок и что-то не нашёл в описании вашего API этого. Т.е. ищу способ публикации в свою группу из приложения

Vsevolod Romashov
@7even
@chip-and-dail если речь про публикацию записи на стене группы, то нужен метод wall.post
chip-and-dail
@chip-and-dail
@7even Да, но ваша разработка не включает этого метода, верно?
Vsevolod Romashov
@7even
vkontakte_api позволяет вызывать любые методы, в том числе и wall.post
Aleksey Kurepin
@foxweb
ну штош