Skip to content

Problema de autorização #1

Description

@gabrielpcardozo

get '/login' do
state = SpotifyAuth.generate_state
session[:state] = state
logger.info("state: #{state}")
redirect SpotifyAuth.login_url(state)
#<localhost>/login -> é o path correto para garantir os parametros.
#Apos a autorizacao
#https://getaccess/callback?code=AQD6-e_Kj7ltUvJz8T7yvoU-dk8rC6e-ZH_5FX4L2wtMJ86tQ1B1myFUj5E48ez7DUXqXx0t8nnI5QAdlc4073fwgsHVldIqq7YoekfX-flvLpUhdGB9bEzoRznhFLs-Li-BH4xmPCYTbAnoVXe7tNU5F2XtgkOr6EwncNV55bN7dPPHG_VAprxLMVXS_X-vZdJUwd0CkGEDShsFk7DHUNrz&state=441f6aa7fb707163
end
#Cria a url de <callback> para coelta do acces_token e informacoes necessarias como na Documentacao.
get '/callback' do
if params[:state] != session[:state]
logger.error("state Session #{session[:state]} \n state params #{params[:state]}")
halt 400, "State mismatch"
end
#Faz as trocas de dos codigos de autorizacao pelos token de acesso.
begin
tokens = SpotifyAuth.fetch_token(params[:code])
logger.info("Acces_Token: #{tokens['access_token']}")
session[:access_token] = tokens['access_token']
"Token de acesso: #{tokens['access_token']}"
rescue RestClient::ExceptionWithResponse => e
logger.error("Failed to obtain token: #{e.response}")
status e.http_code
"Falha ao obter o token: #{e.response}"
end
end
get '/profile' do
acces_token = session[:acces_token]
if acces_token.nil?
redirect '/login'
else
#Chama a API
begin
user_info =RestClient.get('https://api.spotify.com/v1/me', {
Authorization: "Bearer #{access_token}"
})
#chama a api para coletas as informacoes do user
playlists = RestClient.get('https://api.spotify.com/v1/me/playlists', {
Authorization: "Bearer #{access_token}"
})
user_info_json =JSON.parse(user_info.body)
playlists_json =JSON.parse(playlists.body)
erb :profile, locals: { user_info: user_info_json, playlists: playlists_json }
rescue RestClient::ExceptionWithResponse => e
logger.error("Failed to fetch user info or playlists: #{e.response}")
"Erro ao obter informações do usuário ou playlists: #{e.response}"
end
end
end

O bug acontece logo após a autorização via Spotify, por alguma motivo a URL retornada junto com o "callback" não é a esperada, é retornada com um parâmetro de "code=..." e não o "access_token=...".

Para remediar isso vou realizar os acessos via chrome padrão e não dentro do meu projeto.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions