code: func (user *User) AuthTempToken() string {
  
  	host := user.ctx.ServiceBaseURL.Host
  	if host == "" {
  		host = user.ctx.Service().DefaultBaseURL.Host
  	}
  
  	serviceBaseURL := user.ctx.ServiceBaseURL.String()
  	if serviceBaseURL == "" {
  		serviceBaseURL = user.ctx.Service().DefaultBaseURL.String()
  	}
  
  	ps, _ := user.protectedSettings()
  	if ps.AuthTempToken != "" {
  		fmt.Println("found AuthTempToken:" + ps.AuthTempToken)
  
  		oAuthIDCacheFound := oAuthIDCacheVal{}
  		if exists := user.Cache("auth_"+ps.AuthTempToken, &oAuthIDCacheFound); !exists {
  			oAuthIDCacheFound = oAuthIDCacheVal{BaseURL: serviceBaseURL}
  			user.SetCache("auth_"+ps.AuthTempToken, oAuthIDCacheFound, time.Hour*24)
  		}
  
  		u, _ := url.Parse(oAuthIDCacheFound.BaseURL)
  
  		if u != nil && u.Host == host {
  			return ps.AuthTempToken
  		}
  	}
  
  	rnd := strings.ToLower(rndStr.Get(16))
  	user.SetCache("auth_"+rnd, oAuthIDCacheVal{BaseURL: serviceBaseURL}, time.Hour*24)
  
  	err := user.saveProtectedSetting("AuthTempToken", rnd)
  
  	if err != nil {
  		user.ctx.Log().WithError(err).Error("Error saving AuthTempToken")
  	}
  	return rnd
  }
docs: // AuthTempToken returns Auth token used in OAuth process to associate TG user with OAuth creditianals