18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'app/controllers/sessions_controller.rb', line 18
def oauth_callback
unless session[:request_token] && session[:request_token_secret]
authentication_failed('No authentication information was found in the session. Please try again.') and return
end
unless params[:oauth_token].blank? || session[:request_token] == params[:oauth_token]
authentication_failed('Authentication information does not match session information. Please try again.') and return
end
@request_token = OAuth::RequestToken.new(SoundcloudAuth.consumer, session[:request_token], session[:request_token_secret])
oauth_verifier = params["oauth_verifier"]
@access_token = @request_token.get_access_token(:oauth_verifier => oauth_verifier)
session[:request_token] = nil
session[:request_token_secret] = nil
@user = User.identify_or_create_from_access_token(@access_token)
session[:user_id] = @user.id
cookies[:remember_token] = @user.remember_me
authentication_succeeded
rescue Net::HTTPServerException => e
case e.message
when '401 "Unauthorized"'
authentication_failed('This authentication request is no longer valid. Please try again.') and return
else
authentication_failed('There was a problem trying to authenticate you. Please try again.') and return
end
end
|