def callback_phase
token = request.params['token']
params = { :api_key => api_key, :method => 'auth.getSession', :format => 'json' }
params[:token] = token
params[:api_sig] = signature(token)
response = RestClient.get('http://ws.audioscrobbler.com/2.0/', { :params => params })
@auth = MultiJson.decode(response.to_s)
raise CallbackError.new(@auth['error'],@auth['message']) if @auth['error']
user_params = { :method => "user.getInfo", :user => @auth['session']['name'], :api_key => api_key, :format => "json" }
user_response = RestClient.get('http://ws.audioscrobbler.com/2.0/', { :params => user_params })
@user_auth = MultiJson.decode(user_response.to_s)
raise CallbackError.new(@user_auth['error'],@user_auth['message']) if @user_auth['error']
super
rescue CallbackError => e
fail!(:invalid_response, e)
end