{"record":{"id":"6b8cdd64c6424ce0","repo":"AlexxIT/go2rtc","slug":"tokenresponse-msg","errorCode":null,"errorMessage":"${tokenResponse.Msg}","messagePattern":"\\$\\{tokenResponse\\.Msg\\}","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/tuya/cloud_api.go","lineNumber":185,"sourceCode":"\n\turl := fmt.Sprintf(\"https://%s/v1.0/token?grant_type=1\", c.baseUrl)\n\n\tc.accessToken = \"\"\n\tc.refreshToken = \"\"\n\n\tbody, err := c.request(\"GET\", url, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar tokenResponse TokenResponse\n\terr = json.Unmarshal(body, &tokenResponse)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !tokenResponse.Success {\n\t\treturn errors.New(tokenResponse.Msg)\n\t}\n\n\tc.accessToken = tokenResponse.Result.AccessToken\n\tc.refreshToken = tokenResponse.Result.RefreshToken\n\tc.expireTime = tokenResponse.Timestamp + tokenResponse.Result.ExpireTime\n\tc.refreshingToken = false\n\n\treturn nil\n}\n\nfunc (c *TuyaCloudApiClient) loadWebrtcConfig() (*WebRTCConfig, error) {\n\turl := fmt.Sprintf(\"https://%s/v1.0/users/%s/devices/%s/webrtc-configs\", c.baseUrl, c.uid, c.deviceId)\n\n\tbody, err := c.request(\"GET\", url, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/AlexxIT/go2rtc/blob/c245815e75e2a5fd60b4290f12bfc04e55a984d3/pkg/tuya/cloud_api.go#L167-L203","documentation":"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.","triggerScenarios":"Thrown at pkg/tuya/cloud_api.go:185 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify client_id/client_secret and sign computation (tuya signing is strict)","Check the appended Msg for the exact cloud reason","Retry respecting rate limits after fixing credentials"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c245815e75e2a5fd60b4290f12bfc04e55a984d3","analyzedAt":"2026-09-07T11:47:02.965Z","contentChangedAt":"2026-09-07T11:47:02.965Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}