Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

генерит не верные ссылки #9

Closed
roushkaman opened this issue Dec 16, 2012 · 5 comments
Closed

генерит не верные ссылки #9

roushkaman opened this issue Dec 16, 2012 · 5 comments

Comments

@roushkaman
Copy link

после поиска аудиозаписей

VkontakteApi::Client.new(session[:token]).audio.get(uid: 167270710)

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

вот что нашел в постах:
"Для каждого пользователя ссылка на файл является уникальной. Прежде, чем получить ссылку, вы должны представится системе. Естественно, браузер и php это разные пользователи. Либо вы должны имитировать через headers/curl браузер."

взято от сюда:
http://hashcode.ru/questions/161857/php-404-not-found-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%BF%D1%8B%D1%82%D0%BA%D0%B5-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-get_headers-vk

@7even
Copy link
Owner

7even commented Dec 16, 2012

vkontakte_api никак не изменяет url-ы треков - они возвращаются ровно в том виде, в котором их возвращает вконтакте.

Ключевая фраза - "браузер и php это разные пользователи": если перефразировать на человеческий язык, запрос с сервера нужно авторизовать с сервера, а запрос из браузера нужно авторизовать через браузер - трек будет доступен по полученному урлу только для того IP-адреса, с которого был получен токен. То есть если авторизация проведена через метод VkontakteApi.authorize(code: params[:code]) (серверный вариант), то трек можно будет только скачать на сервер, а уже оттуда отдавать в браузер. Если нужно отдавать из вконтакта напрямую в браузер, то и авторизовывать нужно через браузер - тут уже данный гем вряд ли поможет.

@7even 7even closed this as completed Dec 16, 2012
@roushkaman
Copy link
Author

Ясно, плохо конечно, но спасибо =)

@roushkaman
Copy link
Author

Извините что вас бес толку может беспокою снова. Но если мне попробовать клиентскую авторизацию?
VkontakteApi.authorization_url(type: :client, scope: [:audio])
То как мне выловить access_token?

@7even
Copy link
Owner

7even commented Dec 16, 2012

Нужно поставить VkontakteApi.redirect_uri на https://oauth.vk.com/blank.html. После подтверждения юзером прав пойдет редирект на этот blank.html, причем в урле будет содержаться токен - что-то вроде этого: https://oauth.vk.com/blank.html#access_token=4ccecbfa8c054a12438576cb3a4cf85e3b48cc84ccc571d1c039762fce315ee86fc53ce&expires_in=86400&user_id=628985. В веб-приложении вытащить его оттуда не получится - нужен контроль над адресной строкой браузера.

Но эта авторизация нужна для других методов API - для работы со стеной, личными сообщениями итд. Чтобы аудиотреки были доступны в браузере, нужен яваскрипт.

@roushkaman
Copy link
Author

Ага, спасибо большое!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants