@@ -2,10 +2,9 @@ package auth
2
2
3
3
import (
4
4
"encoding/json"
5
- "log"
6
5
"net/http"
7
6
8
- "code.google.com/p/goauth2/oauth "
7
+ oauth "golang.org/x/oauth2 "
9
8
)
10
9
11
10
type emailPasswordParams struct {
@@ -70,53 +69,38 @@ func (a *Auth) SignIn(w http.ResponseWriter, r *http.Request) {
70
69
}
71
70
}
72
71
73
- // The oauth endpoint callback, configured on provider, Send provider name as params and method will return http handle
72
+ // The oauth endpoint callback, configured on provider, Send provider name as params
73
+ // OAuthCallback will receive code params from provider and get user information
74
74
//
75
75
// ```
76
- // GET /auth/callback/google auth.OAuthCallback("google")
77
- // GET /auth/callback/facebook auth.OAuthCallback("facebook")
76
+ // GET /auth/google/callback http.HandlerFunc -> auth.OAuthCallback("google", w, r)
77
+
78
+ // GET /auth/facebook/callback http.HandlerFunc -> auth.OAuthCallback("facebook", w, r)
78
79
// ```
79
- func (a * Auth ) OAuthCallback (providerName string ) http.HandlerFunc {
80
- return func (w http.ResponseWriter , r * http.Request ) {
81
- // userId, err := a.oAuthUser(providerName, request)
82
- a .oAuthUser (providerName , w , r )
83
- //if err != nil {
84
- //http.Redirect(w, request, b.URLS.SignIn, http.StatusTemporaryRedirect)
85
- //} else {
86
- //b.login(request, w, strconv.FormatInt(userId, 10))
87
- //}
88
- }
80
+ func (a * Auth ) OAuthCallback (providerName string , w http.ResponseWriter , r * http.Request ) (string , error ) {
81
+ return a .oAuthUser (providerName , w , r )
89
82
}
90
83
91
- // OAuthCallback receive code params from provider and get user information
92
- func (a * Auth ) oAuthUser (providerName string , w http.ResponseWriter , r * http.Request ) {
93
- provider := a .Providers [providerName ]
84
+ func (a * Auth ) oAuthUser (providerName string , w http.ResponseWriter , r * http.Request ) (userID string , err error ) {
94
85
code := r .FormValue ("code" )
95
- t := & oauth.Transport {Config : provider .Auth }
96
-
97
- token , errx := t .Exchange (code )
98
- log .Println (t .Token )
99
- log .Println (t .TokenCache )
100
- log .Println ("TOKEN" , code , token , errx )
101
-
102
- // response, err := t.Client().Get(provider.UserInfoURL)
103
- //if err != nil {
104
- // log.Println(err)
105
-
106
- // w.WriteHeader(http.StatusBadRequest)
107
- // return
108
- //}
109
- //defer response.Body.Close()
86
+ provider := a .Providers [providerName ]
87
+ token , err := provider .Auth .Exchange (oauth .NoContext , code )
88
+ if err != nil {
89
+ return
90
+ }
91
+ client := provider .Auth .Client (oauth .NoContext , token )
92
+ response , err := client .Get (provider .UserInfoURL )
93
+ if err != nil {
94
+ return
95
+ }
96
+ defer response .Body .Close ()
110
97
111
- //log.Println(ioutil.ReadAll(response.Body))
112
- //
113
- // var user User
114
- // decoder := json.NewDecoder(responseAuth.Body)
115
- // user.Token = NewUserToken()
116
- // err := decoder.Decode(&user)
117
- // if err != nil {
118
- // panic(err)
119
- // }
120
- //
121
- // return b.UserSetupFn(provider, &user, responseAuth)
98
+ var user User
99
+ decoder := json .NewDecoder (response .Body )
100
+ err = decoder .Decode (& user )
101
+ // user.Token = NewUserToken()
102
+ if err != nil {
103
+ return
104
+ }
105
+ return a .Helper .FindUserFromOAuth (providerName , & user , response )
122
106
}
0 commit comments