7even/vkontakte_api

Проблемы с photos.save

rordev opened this issue · 11 comments

Вероятно проблемы только у меня, но возможно поможете разобраться?

Пытаюсь загрузить фото в альбом. Список альбомов получаю. Всё проходит нормально (авторизация пользователя, получение ссылки на загрузку, загрузка) до того самого момента как надо вызвать photos.save

us = vk.photos.get_upload_server(aid: 11111111)
=> #<Hashie::Mash ..........>

up = VkontakteApi.upload(url: us.upload_url, file1: ['z:/375.jpg', 'image/jpeg'])
=> #<Hashie::Mash ..........>
photos_list не пустой (видел у многих из-за пустого проблемы возникают)

save = vk.photos.save(aid: up.aid, server: up.server, photos_list: up.photos_list, hash: up.hash, caption: "Test...")
=>VkontakteApi::Error: VkontakteApi::Error
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/vkontakte_api-1.1/lib/vkontakte_api/result.rb:31:in extract_result' from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/vkontakte_api-1.1/lib/vkontakte_api/result.rb:14:inprocess'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/vkontakte_api-1.1/lib/vkontakte_api/method.rb:14:in call' from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/vkontakte_api-1.1/lib/vkontakte_api/resolver.rb:16:inmethod_missing'

Что это может быть?

PS. Кстати при создании альбома такая же ошибка...

Провел те же самые действия - все работает.

Текст ошибки содержится в исключении VkontakteApi::Error, можно попробовать отловить его и посмотреть, какую ошибку возвращает ВКонтакте:

begin
  us = vk.photos.get_upload_server(aid: 11111111)
  up = VkontakteApi.upload(url: us.upload_url, file1: ['z:/375.jpg', 'image/jpeg'])
  save = vk.photos.save(up)
rescue VkontakteApi::Error => e
  puts e.message
end

Я понимаю, что это прозвучит ужасно, но после перезагрузки компа всё заработало... Не знаю что это было. Но спасибо за помощь.

Тем не менее появился еще один вопрос - я авторизовался и сохранил токен, потом вызываю

vk = VkontakteApi::Client.new(token = 'tokenstring')

vk.is_app_user?
=> true

vk.user_id
=> nil

Почему nil? Как получить id пользователя?

При первоначальной авторизации id показывается.

Объект VkontakteApi::Client знает свой user_id только после авторизации через VkontakteApi.authorize, потому что он сам запрашивает строку токена, и вместе с ним получает id пользователя.

При авторизации другими способами он тоже приходит вместе с токеном, там в ответе приходит что-то вроде этого:

{
  "access_token": "533bacf01e11f55b536a565b57531ac114461ae8736d6506a3",
  "expires_in":   43200,
  "user_id":      6492
}

Я понял, спасибо!

И еще немного не относящийся к джему вопрос - я авторизуюсь как сайт, запрашиваю права notify и/или notifications но мне их не дают. Это только для сайтов или вообще?

Еще пробовал авторизоваться как клиентское приложение и получить доступ к сообщениям, но мне в итоге выдает, что-то про messages только для десктопных приложений.

Насчет notify/notifications не знаю, а messages точно дается только standalone (десктопным/мобильным) приложениям.

Т.е. из рельс не получится получить доступ к messages?

Почитаю, спасибо!

А как-то можно отловить captcha_sid и captcha_img когда вк возвращает ошибку 14 'Captcha needed'?

Да, правда этот функционал еще не вошел в стабильный релиз, нужно подключать vkontakte_api прямо с гитхаба.

#10

Спасибо. Всё работает отлично!