code: func newTokenRequest(tokenURL, clientID, clientSecret string, v url.Values, authStyle AuthStyle) (*http.Request, error) {
  	if authStyle == AuthStyleInParams {
  		v = cloneURLValues(v)
  		if clientID != "" {
  			v.Set("client_id", clientID)
  		}
  		if clientSecret != "" {
  			v.Set("client_secret", clientSecret)
  		}
  	}
  	req, err := http.NewRequest("POST", tokenURL, strings.NewReader(v.Encode()))
  	if err != nil {
  		return nil, err
  	}
  	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  	if authStyle == AuthStyleInHeader {
  		req.SetBasicAuth(url.QueryEscape(clientID), url.QueryEscape(clientSecret))
  	}
  	return req, nil
  }
docs: // newTokenRequest returns a new *http.Request to retrieve a new token
  // from tokenURL using the provided clientID, clientSecret, and POST
  // body parameters.
  //
  // inParams is whether the clientID & clientSecret should be encoded
  // as the POST body. An 'inParams' value of true means to send it in
  // the POST body (along with any values in v); false means to send it
  // in the Authorization header.