Привет ,
мне нужно через руби подключится и взять токен от спотифи (Что я сделал ) ,
но токен который мне присылают низкоуровневый (из Flow'a client_credentials) , а при смене Flow'a мне выдаёт BAD REQUEST.
Запрос токена:
grant = Base64.encode64("#{CLIENT_ID}:#{CLIENT_SECRET}").delete("\n")
respond = RestClient.post('https://accounts.spotify.com/api/token',
{'grant_type' => 'client_credentials'},
{"Authorization" => "Basic #{grant}"})
token_ext = respond.split(',')
token_ext2 = token_ext[0].split(':')
only_token = token_ext2[1].delete_prefix('"').delete_suffix('"')
puts 'ACCES TOKEN: %s' % [only_token]
Но проблема с токеном это не все , моя главная задача это работа с плейлистом.
Во первых мне надо добавить новый плэйлист , я пробывал это сделать но до этого я не работал с HTTP Request-ами в таком формате.
Мои попытки добавления плейлиста(код ниже не работает):
# respond = RestClient.post('https://api.spotify.com/v1/users/%s/playlists' % [USER_ID],
# {"Content-Type" => "application/json"},
# {"Authorization" => "Basic #{grant}"})
# respond = RestClient.post('https://api.spotify.com/v1/users/%s/playlists' % [USER_ID],
#
# {"Content-Type" => "application/json"},
# {"Authorization" => "Basic #{grant}"},
# ) { "name" => "New Playlilist" ; "description" => "sdada" ; "public" => "false"}
И так в конце хотел бы вернутся к токену , так как в конце я уже устал искать на руби гайды по работе с спотифи по этому я нашел gem "spotify-client". Забросил токен в конфиг и попытался сделать новый плейлист.
config = {
:access_token => only_token.to_s, # initialize the client with an access token to perform authenticated calls
:raise_errors => true, # choose between returning false or raising a proper exception when API calls fails
# Connection properties
:retries => 1, # automatically retry a certain number of times before returning
:read_timeout => 10, # set longer read_timeout, default is 10 seconds
:write_timeout => 10, # set longer write_timeout, default is 10 seconds
:persistent => false # when true, make multiple requests calls using a single persistent connection. Use +close_connection+ method on the client to manually clean up sockets
}
client = Spotify::Client.new(config)
sleep(2)
puts client.create_user_playlist(USER_ID, "ALOHA", is_public = true)
В результате мне выдало ошибку что у меня недостаточно прав , то есть мой токен не даёт мне такие права.
Ну и сам вопрос в конце концов. Как мне взять нужный токен(нужный токен из Flow'a authorization_code) от спотифи через запрос используя Watir или RestClient ? А так-же как мне добавить новый плэйлист и делать такие манипуляции как добавления трека в плейлист , смена последнего трека с первым в плейлисте и вытаскивание данных о песни ?
Спасибо