def METHOD_NAME(self, user, uid, response, details=None, *args, **kwargs):
    data = super().METHOD_NAME(user, uid, response, details, *args, **kwargs)
    # testing purpose
    if self.set_expires_in_to is not None:
        data["expires_in"] = self.set_expires_in_to
    # current server local Epoch time (in sec)
    current_time = int(time.time())
    current_time_str = datetime.fromtimestamp(current_time).strftime(
        "%Y-%m-%d %H:%M:%S"
    )
    data["updated_at"] = current_time_str
    # expire at current Epoch time (in sec) + expire_in - margin_in_seconds
    expires_at = current_time + data["expires_in"] - self.margin_in_seconds
    data["expires_at"] = expires_at
    expires_at_str = datetime.fromtimestamp(expires_at).strftime(
        "%Y-%m-%d %H:%M:%S"
    )
    data["expires_at_str"] = expires_at_str
    # Reconstitute token dictionary for client convenience
    # backward compatible
    token_dict = {
        "access_token": data["access_token"],
        "token_type": data["token_type"],
        "expires_in": data["expires_in"],
        "expires_at": data["expires_at"],
        "refresh_token": data["refresh_token"],
        "scope": data["scope"],
    }
    data["token_dict"] = token_dict
    return data