code: func (OAuth2) RedirectURL(imp Importer, ctx *SetupContext) string {
  	// We strip our callback URL of its query component, because the Redirect URI
  	// we send during authorization has to match exactly the registered redirect
  	// URI(s). This query component should be stored in the "state" paremeter instead.
  	// See http://tools.ietf.org/html/rfc6749#section-3.1.2.2
  	fullCallback := ctx.CallbackURL()
  	queryPart := imp.CallbackURLParameters(ctx.AccountNode.PermanodeRef())
  	if len(queryPart) == 0 {
  		log.Printf("WARNING: callback URL %q has no query component", fullCallback)
  	}
  	u, _ := url.Parse(fullCallback)
  	v := u.Query()
  	// remove query params in CallbackURLParameters
  	for k := range queryPart {
  		v.Del(k)
  	}
  	u.RawQuery = v.Encode()
  	return u.String()
  }
docs: // RedirectURL returns the redirect URI that imp should set in an oauth.Config
  // for the authorization phase of OAuth2 authentication.