Проблемы с 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:in
process'
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:in
method_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
прямо с гитхаба.
Спасибо. Всё работает отлично!