code: func (a *OAuthStrategy) Refresh() error {
  	refreshToken := a.RefreshToken()
  
  	if refreshToken == "" {
  		return a.requestToken()
  	}
  
  	var accessToken string
  	var err error
  
  	if a.ClientCredentialRefresh {
  		accessToken, err = a.OAuthClient.ClientCredentialGrant(a.ClientId, a.ClientSecret)
  	} else {
  		accessToken, refreshToken, err = a.OAuthClient.RefreshTokenGrant(a.ClientId, a.ClientSecret, refreshToken)
  	}
  
  	if err != nil {
  		if strings.Contains(err.Error(), "invalid_token") {
  			return errors.New("You are not currently authenticated. Please log in to continue.")
  		}
  		return err
  	}
  
  	a.SetTokens(accessToken, refreshToken)
  
  	return nil
  }
docs: // Refresh will get a new AccessToken
  //
  // If RefreshToken is available, a refresh token grant will be used, otherwise
  // client credential grant will be used.