public function getMediaToken($mediaContentKey, $clientUserId = null, array $optParams = [])
    {
        if (!isset($optParams['security_key'])) {
            $optParams['security_key'] = $this->serviceAccount->getKey();
        }

        if (!isset($optParams['media_content_key'])) {
            $optParams['media_content_key'] = $mediaContentKey;
        }

        if (!empty($clientUserId)) {
            $optParams['client_user_id'] = $clientUserId;
        }

        if (!isset($optParams['expire_time'])) {
            $optParams['expire_time'] = 7200;
        }

        $response = $this->getResponseJSON(
            'POST',
            'media_auth/media_token/get_media_link_by_userid.json',
            [],
            $optParams
        );

        if (!isset($response->result->media_token)) {
            throw new ClientException('Response is invalid.');
        }

        return $response->result->media_token;
    }