code: func (ctx *Context) GetPreCode() (string, error) {
  	cat, err := ctx.GetComponentAccessToken()
  	if err != nil {
  		return "", err
  	}
  	req := map[string]string{
  		"component_appid": ctx.AppID,
  	}
  	uri := fmt.Sprintf(getPreCodeURL, cat)
  	body, err := util.PostJSON(uri, req)
  	if err != nil {
  		return "", err
  	}
  
  	var ret struct {
  		PreCode string `json:"pre_auth_code"`
  	}
  	if err := json.Unmarshal(body, &ret); err != nil {
  		return "", err
  	}
  
  	return ret.PreCode, nil
  }
docs: // GetPreCode 获取预授权码