@@ -31,14 +31,20 @@ defmodule Ueberauth.Strategy.Google do
31
31
@ doc """
32
32
Handles the callback from Google.
33
33
"""
34
- def handle_callback! ( % Plug.Conn { params: % { "code" => code } } = conn ) do
35
- opts = [ redirect_uri: callback_url ( conn ) ]
36
- token = Ueberauth.Strategy.Google.OAuth . get_token! ( [ code: code ] , opts )
37
-
38
- if token . access_token == nil do
39
- set_errors! ( conn , [ error ( token . other_params [ "error" ] , token . other_params [ "error_description" ] ) ] )
40
- else
41
- fetch_user ( conn , token )
34
+ def handle_callback! ( % Plug.Conn { params: params } = conn ) do
35
+ case params do
36
+ % { "code" => code } ->
37
+ opts = [ redirect_uri: callback_url ( conn ) ]
38
+ token = Ueberauth.Strategy.Google.OAuth . get_token! ( [ code: code ] , opts )
39
+ if token . access_token == nil do
40
+ set_errors! ( conn , [ error ( token . other_params [ "error" ] , token . other_params [ "error_description" ] ) ] )
41
+ else
42
+ fetch_user ( conn , token )
43
+ end
44
+ % { "token" => token } ->
45
+ fetch_user ( conn , OAuth2.AccessToken . new ( token ) )
46
+ _ ->
47
+ set_errors! ( conn , [ error ( "missing_code_or_token" , "No code or token received" ) ] )
42
48
end
43
49
end
44
50
@@ -124,7 +130,7 @@ defmodule Ueberauth.Strategy.Google do
124
130
resp = Ueberauth.Strategy.Google.OAuth . get ( token , path )
125
131
126
132
case resp do
127
- { :ok , % OAuth2.Response { status_code: 401 , body: _body } } ->
133
+ { :error , % OAuth2.Response { status_code: 401 , body: _body } } ->
128
134
set_errors! ( conn , [ error ( "token" , "unauthorized" ) ] )
129
135
{ :ok , % OAuth2.Response { status_code: status_code , body: user } } when status_code in 200 .. 399 ->
130
136
put_private ( conn , :google_user , user )
0 commit comments