@@ -8,31 +8,12 @@ class GoogleAuthController < ApiController
88 authorize_resource :google_auth , class : false
99
1010 def exchange_code
11- payload = google_token_params
12-
13- request_body = {
14- code : payload [ :code ] ,
15- client_id : ENV . fetch ( 'GOOGLE_CLIENT_ID' ) ,
16- client_secret : ENV . fetch ( 'GOOGLE_CLIENT_SECRET' ) ,
17- redirect_uri : payload [ :redirect_uri ] ,
18- grant_type : 'authorization_code'
19- }
20-
21- conn = Faraday . new do |f |
22- f . request :url_encoded
23- f . options . timeout = 10 # connection open timeout
24- f . options . open_timeout = 5 # connection initialization timeout
25- end
26-
27- response = conn . post ( TOKEN_EXCHANGE_URL , request_body )
11+ response = faraday . post ( TOKEN_EXCHANGE_URL , token_exchange_payload )
2812 @token_response = JSON . parse ( response . body )
2913
30- if response . success?
31- render :exchange_code , status : :ok
32- else
33- error_message = @token_response [ 'error_description' ] || @token_response [ 'error' ] || 'Unknown error'
34- render json : { error : error_message } , status : :unauthorized
35- end
14+ return render ( :exchange_code , status : :ok ) if response . success?
15+
16+ render json : { error : response_error_message } , status : :unauthorized
3617 rescue JSON ::ParserError => e
3718 render json : { error : e . message } , status : :bad_gateway
3819 rescue Faraday ::Error => e
@@ -41,6 +22,29 @@ def exchange_code
4122
4223 private
4324
25+ def faraday
26+ Faraday . new do |f |
27+ f . request :url_encoded
28+ f . options . timeout = 10
29+ f . options . open_timeout = 5
30+ end
31+ end
32+
33+ def token_exchange_payload
34+ payload = google_token_params
35+ {
36+ code : payload [ :code ] ,
37+ client_id : ENV . fetch ( 'GOOGLE_CLIENT_ID' ) ,
38+ client_secret : ENV . fetch ( 'GOOGLE_CLIENT_SECRET' ) ,
39+ redirect_uri : payload [ :redirect_uri ] ,
40+ grant_type : 'authorization_code'
41+ }
42+ end
43+
44+ def response_error_message
45+ @token_response [ 'error_description' ] || @token_response [ 'error' ] || 'Unknown error'
46+ end
47+
4448 def google_token_params
4549 params . require ( :google_auth ) . require ( :code )
4650 params . require ( :google_auth ) . require ( :redirect_uri )
0 commit comments