@staticmethod
def _was_exp_claim_rejected_due_to_clock_skew(network_response):
    """
        Determine whether the network response indicates that the authorization request was rejected because of
        the exp claim. This can happen if the current system time is too different from the Box server time.

        Returns True if the status code is 400, the error code is invalid_grant, and the error description indicates
        a problem with the exp claim; False, otherwise.

        :param network_response:
        :type network_response:
            :class:`Response`
        :rtype:
            `bool`
        """
    status_code = network_response.status_code
    try:
        json_response = network_response.json()
    except ValueError:
        return False
    error_code = json_response.get('error', '')
    error_description = json_response.get('error_description', '')
    return (status_code == 400 and error_code == 'invalid_grant' and 'exp' in
        error_description)
