Я делаю вот так и оно работает:
в JavaScript перехожу по ссылке
http://oauth.vk.com/authorize?client_id=XXXXXX&display=popup&redirect_uri=http://'+document.domain+'/vk_login.php&response_type=code
в скрипте vk_login.php пишу следующее:
$vk_app_id = ''; // id вашего приложения
$vk_app_secret = ''; // секретный ключ вашего приложения
$url = 'https://oauth.vk.com/access_token?client_id='.$vk_app_id.'&client_secret='.$vk_app_secret.'&code='.$_REQUEST['code'].'&redirect_uri=http://'.$_SERVER['SERVER_NAME'].'/vk_login.php';
$result = file_get_contents($url);
$result = json_decode($result, true);
$access_token = $result['access_token'];
// дальше то, что требуется
Обратите внимание, что redirect_url должен быть одинаковым в обеих ссылках.