public AccessTokenResult getAccessToken(String code)
    {
        String respStr = getAccessTokenStr(SINA_ACCESS_TOKEN_URL, code);
        
        AccessTokenResult result = new AccessTokenResult();
        if (respStr == null || "".equals(respStr)) {
        	result.setRv(ERROR_NETWORK_CALL);
        	return result;
        }
        
        Object obj = JSON.parse(respStr);
		JSONObject msg = (JSONObject)obj;
		
		int errorCode = msg.getIntValue("error_code");
        if (errorCode > 0) {
            result.setRv(errorCode);
            result.setErrmsg(msg.getString("error_description"));
        } else {
            result.setRv(ERROR_SUCCESS);
            result.setAccessToken(msg.getString("access_token"));
            long now = new Date().getTime();
            result.setLoginTime(now);
            result.setExpireTime(now + msg.getLong("expires_in") - 600);
            this.accessToken = msg.getString("access_token");
            this.uid = msg.getString("uid");
        }
        return result;
    }