Есть задача, настроить поиск видео через Vkontakte API с сервера.
Авторизация до недавнего времени решалась не очень красиво, но работало.
application_id = '123456'<br>
application_secret = 'secretapplicationkey'<br>
code_url = 'http://oauth.vk.com/oauth/authorize?client_id=***&scope=video&redirect_uri=http://vasja.ru&response_type=code&_hash=0'<br>
email = 'vasja@vasja.ru'<br>
password = 'password'<br><br>
# Settings<br>
tokenExpire = Settings.vkontakte[:expires]<br>
token = Settings.vkontakte[:access_token]<br><br>
if Time.current >= tokenExpire<br>
puts '=== Logging in to vk.com and getting cookies ==='<br>
resp = Net::HTTP.post_form(URI.parse('http://vk.com/login.php'),<br>
{'m' => '1', 'email' => email, 'pass' => password})<br>
cookies = resp.response['set-cookie']<br>
remixsid = cookies.split('remixsid=')[1].split(';')[0].split(',')[0]<br><br>
puts '=== Logging in once again with the cookies ==='<br>
# Подключаемся снова к http://vk.com<br>
header = { "Cookie" => 'remixsid=' + remixsid }<br>
data = open(code_url, header)<br><br>
resultURL = data.base_uri.to_s<br><br>
puts '== Parsing URL for code param ==='<br>
codeParams = Rack::Utils.parse_query URI(resultURL).query<br>
code = codeParams['code']<br>
end<br><br>
puts '=== Authorizing ==='<br>
if Time.current >= tokenExpire<br>
app = VK::Serverside.new app_id: application_id, app_secret: application_secret<br>
app.authorize code<br>
Settings.vkontakte = { :access_token => app.access_token, :expires => (Time.current + app.expires_in) }<br>
else<br>
app = VK::Serverside.new app_id: application_id, app_secret: application_secret, access_token: token<br>
end<br>
Дальше уже работали с API как обычно используя обёртку над API
vk-ruby
Но тут где-то в 20-ых числах сентября Vkontakte вдруг внезапно изменили порядок авторизацию, чем сломали огромное количество скриптов и сервисов разных направлений (Так например Loginza тоже
оказалась под ударом). Об этом писали например на
античате.
Теперь просто так
resp = Net::HTTP.post_form(URI.parse('http://vk.com/login.php'),<br>
{'m' => '1', 'email' => email, 'pass' => password})<br>
уже не залогинится, он просто не авторизует и уже невозможно далее получить куку Remixsid.
Пробовали пойти легальным путём и воспользоватся
github.com/7even/vkontakte_api (Сервер приложения)
Токен получаем, всё замечательно только вот при попытке воспользоваться video.search получаем ошибку:
User authorization failed: method is unavailable with server auth.
Собственно вопрос. Как теперь малой кровью можно авторизоваться в vkontakte с сервера и получить полноценный access_token для дальнейшего использования с API.
Заранее благодарю за любую помощь в решении этого вопроса :)