Прямой ответ на вопрос:
можно.
Причём достаточно передавать только токен, т.к. по нему легко узнать id юзера, выполнив
users.get() без параметров с этим токеном.
Другое дело, что в целом такая «защита» ненадёжна. Всё, что делается у клиента – подделывается. Приложение можно модифицировать, чтобы отправлять всегда некую статичную пару токен+серийник, скачанную у пиратов.
Я думал над защитой через использование хранимых процедур на сервере ВК. Т.е. приложение вызывает не методы ВК напрямую, а хранимые процедуры, код которых доступен только автору приложения. Внутри процедур можно осуществлять проверку валидности данного юзер id. Для небольшого количества лицензий вполне вариант. Для большого - нет.