{"record":{"id":"f7665161b21cee1d","repo":"justauth/JustAuth","slug":"accesstokenobject-getstring-m","errorCode":null,"errorMessage":"accessTokenObject.getString(\"m\")","messagePattern":"accessTokenObject\\.getString\\(\"m\"\\)","errorType":"exception","errorClass":"AuthException","httpStatus":null,"severity":"error","filePath":"src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java","lineNumber":68,"sourceCode":"    public AuthToken getAccessToken(AuthCallback authCallback) {\n        String response = doPostAuthorizationCode(authCallback.getCode());\n        return getAuthToken(response);\n    }\n\n    private AuthToken getAuthToken(String response) {\n        JSONObject accessTokenObject = checkResponse(response);\n        JSONObject resultObject = accessTokenObject.getJSONObject(\"d\");\n        return AuthToken.builder()\n            .accessToken(resultObject.getString(\"accessToken\"))\n            .refreshToken(resultObject.getString(\"refreshToken\"))\n            .expireIn(resultObject.getIntValue(\"expiresIn\"))\n            .build();\n    }\n\n    private JSONObject checkResponse(String response) {\n        JSONObject accessTokenObject = JSONObject.parseObject(response);\n        if (!\"0\".equals(accessTokenObject.getString(\"c\"))) {\n            throw new AuthException(accessTokenObject.getString(\"m\"));\n        }\n        return accessTokenObject;\n    }\n\n    @Override\n    public AuthUser getUserInfo(AuthToken authToken) {\n        String openId = this.getOpenId(authToken);\n        String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl(source.userInfo())\n            .queryParam(\"access_token\", authToken.getAccessToken())\n            .queryParam(\"open_id\", openId)\n            .build()).getBody();\n        JSONObject object = JSONObject.parseObject(response);\n        if (!\"0\".equals(object.getString(\"c\"))) {\n            throw new AuthException(object.getString(\"m\"));\n        }\n        JSONObject resultObject = object.getJSONObject(\"d\");\n\n        return AuthUser.builder()","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/justauth/JustAuth/blob/694bbf1b010d93404e3bfb4824d90e9ddfaebebb/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java#L50-L86","documentation":"AuthKujialeRequest.checkResponse throws AuthException with the 'm' (message) field when the Kujiale token response's 'c' (code) field is not \"0\". Kujiale wraps all responses as {c: code, m: message, d: data}; any non-zero code is a failure.","triggerScenarios":"AuthKujialeRequest.getAccessToken when Kujiale's /oauth2/token/token endpoint returns a non-zero 'c', e.g. wrong app_key/app_secret, invalid grant code, or unauthorized scope.","commonSituations":"Credentials from the wrong Kujiale environment (test vs production), expired authorization code, or the developer account lacking API access.","solutions":["Log the 'm' message from the AuthException — Kujiale states the reason in Chinese","Verify appKey/appSecret in AuthConfig match the Kujiale open-platform app","Regenerate the authorization flow from scratch (fresh code) instead of replaying an old callback","Confirm the redirect URI is whitelisted in the Kujiale console"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"null","tryCatchPattern":"try {\n    AuthToken t = kujialeRequest.getAccessToken(callback);\n} catch (AuthException e) {\n    // e.getMessage() is Kujiale's 'm' field\n    log.warn(\"Kujiale token error: {}\", e.getMessage());\n}","preventionTips":["Store appKey/appSecret per environment (test vs production Kujiale apps differ)","Use fresh authorization codes; never replay callback URLs","Whitelist the exact redirect URI in the Kujiale console"],"tags":["oauth","kujiale","auth-exception","api-response"],"backgroundTag":null,"analyzedSha":"694bbf1b010d93404e3bfb4824d90e9ddfaebebb","analyzedAt":"2026-08-14T15:16:59.945Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}