github.com/Richardknop/go-oauth2-server@v1.0.1/oauth/grant_type_refresh_token.go (about) 1 package oauth 2 3 import ( 4 "net/http" 5 6 "github.com/RichardKnop/go-oauth2-server/models" 7 "github.com/RichardKnop/go-oauth2-server/oauth/tokentypes" 8 ) 9 10 func (s *Service) refreshTokenGrant(r *http.Request, client *models.OauthClient) (*AccessTokenResponse, error) { 11 // Fetch the refresh token 12 theRefreshToken, err := s.GetValidRefreshToken(r.Form.Get("refresh_token"), client) 13 if err != nil { 14 return nil, err 15 } 16 17 // Get the scope 18 scope, err := s.getRefreshTokenScope(theRefreshToken, r.Form.Get("scope")) 19 if err != nil { 20 return nil, err 21 } 22 23 // Log in the user 24 accessToken, refreshToken, err := s.Login( 25 theRefreshToken.Client, 26 theRefreshToken.User, 27 scope, 28 ) 29 if err != nil { 30 return nil, err 31 } 32 33 // Create response 34 accessTokenResponse, err := NewAccessTokenResponse( 35 accessToken, 36 refreshToken, 37 s.cnf.Oauth.AccessTokenLifetime, 38 tokentypes.Bearer, 39 ) 40 if err != nil { 41 return nil, err 42 } 43 44 return accessTokenResponse, nil 45 }