Вконтакте, по аналогии с Facebook, Twitter, YouTube используют систему OAuth для доступа к их "ресурсам".
{"error":"invalid_grant","error_description":"Code is invalid or expired."}
Судя по строке, ответ = в формате JSON
1) Code is invalid or expired = переводится как, "Неправильный код или сессия закончилась"
2) invalid_grant = означает, ошибка при авторизации - на даёт гранта на доступ
Попробовать -
- Проверить свои секретные ключи на правильность и валидность
- Посмотреть в FAQ есть ли похожие ошибки как эта