code: func (ctx *Context) SetComponentAccessToken(verifyTicket string) (*ComponentAccessToken, error) {
  	body := map[string]string{
  		"component_appid":         ctx.AppID,
  		"component_appsecret":     ctx.AppSecret,
  		"component_verify_ticket": verifyTicket,
  	}
  	respBody, err := util.PostJSON(componentAccessTokenURL, body)
  	if err != nil {
  		return nil, err
  	}
  
  	at := &ComponentAccessToken{}
  	if err := json.Unmarshal(respBody, at); err != nil {
  		return nil, err
  	}
  
  	accessTokenCacheKey := fmt.Sprintf("component_access_token_%s", ctx.AppID)
  	expires := at.ExpiresIn - 1500
  	ctx.Cache.Set(accessTokenCacheKey, at.AccessToken, time.Duration(expires)*time.Second)
  	return at, nil
  }
docs: // SetComponentAccessToken 通过component_verify_ticket 获取 ComponentAccessToken