AlexxIT/go2rtc · error

${tokenResponse.Msg}

Error message

${tokenResponse.Msg}

What it means

Tuya Cloud API initToken guard: the /v1.0/token request transported fine, but TokenResponse reports Success=false and its server Msg becomes the error. Token issuance was refused — invalid signature (wrong client_secret), bad clientId, or rate limiting; no accessToken can be stored.

Solutions

  1. Verify client_id/client_secret and sign computation (tuya signing is strict)
  2. Check the appended Msg for the exact cloud reason
  3. Retry respecting rate limits after fixing credentials
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/tuya/cloud_api.go:185 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of AlexxIT/go2rtc@c245815e75 (2026-09-07). Data as JSON: /api/errors/6b8cdd64c6424ce0. Report an issue: GitHub.

Appendix: source

Thrown at pkg/tuya/cloud_api.go:185

	url := fmt.Sprintf("https://%s/v1.0/token?grant_type=1", c.baseUrl)

	c.accessToken = ""
	c.refreshToken = ""

	body, err := c.request("GET", url, nil)
	if err != nil {
		return err
	}

	var tokenResponse TokenResponse
	err = json.Unmarshal(body, &tokenResponse)
	if err != nil {
		return err
	}

	if !tokenResponse.Success {
		return errors.New(tokenResponse.Msg)
	}

	c.accessToken = tokenResponse.Result.AccessToken
	c.refreshToken = tokenResponse.Result.RefreshToken
	c.expireTime = tokenResponse.Timestamp + tokenResponse.Result.ExpireTime
	c.refreshingToken = false

	return nil
}

func (c *TuyaCloudApiClient) loadWebrtcConfig() (*WebRTCConfig, error) {
	url := fmt.Sprintf("https://%s/v1.0/users/%s/devices/%s/webrtc-configs", c.baseUrl, c.uid, c.deviceId)

	body, err := c.request("GET", url, nil)
	if err != nil {
		return nil, err
	}

View on GitHub (pinned to c245815e75)