Нашел такое решение-
Сначала подключаю-
Код: Выделить всё
<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script> <script type="text/javascript"> VK.init(function() { // API initialization succeeded // Your code here }); </script>
Далее, где мне надо вывести информацию о песне:
Код: Выделить всё
<?php/*** Класс для работы с VK API* Класс видоизменен. Первоначальный вид и ссылка на автора класса:* http://a-panov.ru/2011/10/%D0%BA%D0%BB%D0%B0%D1%81%D1%81-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-vkontakte-api-php/*/class vk { public static $error = ''; /** * Основной метод для запроса данных * * @param $method string имя метода api * @param $method array дополнительные параметры api * @return array результат запроса или FALSE при ошибке */ static function get($account = array(), $method, $params = array()) { if (empty($method)) { self::$error = 'Не задан метод'; return FALSE; } else { // обнулить статус ошибки self::$error = ''; } $params['api_id'] = $account['id_api']; $params['method'] = $method; // версия API if (empty($params['v'])) $params['v'] = '2.0'; // упорядочить ключи по алфавиту ksort($params); // сформировать список значений вида key=value $datas = array(); $strdatas = $account['user_id']; foreach ($params as $k => $v) { $strdatas .= $k . '=' . $v; $datas[] = $k . '=' . urlencode($v); } // формирование подписи $sig = md5($strdatas . $account['key']); // полная строка запроса к API $url = 'http://api.vk.com/api.php' . '?' . implode('&', $datas) . '&sig=' . $sig; // получить результат $result = file_get_contents($url); if ($result) { // удалить ненужные символы $result = preg_replace('![\\x00-\\x1f]!', '', $result); // преобразовать json-строку в массив $arr = new SimpleXMLElement($result); // при наличии ошибка if (isset($arr['error'])) { // записать её текст self::$error = 'Ошибка: ' . $arr['error']['error_msg'] . ' (' . $arr['error']['error_code'] . ')'; $arr = FALSE; } } else { $arr = FALSE; self::$error = 'Нет доступа к адресу ' . 'http://api.vk.com/api.php'; } return $arr; }} /** * Настройки приложения */$key_app = 'xxxxxxxxx'; // Ключ приложения$user_id = xxx; // Ид создателя$api_id = xxx; // ID приложения $method = 'audio.getById'; // метод /** * Получение информации */$params = array(); $params['audios'] = 'xxxxxx_xxxxxxx';$params['test_mode'] = 0; $mp3 = vk::get(array( 'key' => $key_app, 'user_id' => $user_id, 'id_api' => $api_id), $method, $params); if (FALSE === $mp3) { exit ('Error');} else { /** * Получаем заголовки файла */ $get = get_headers($mp3->audio->url,1); print_r($get);}?>
Ответ на странице-
Warning: get_headers() [function.get-headers]: Filename cannot be empty in /home/www/xxx/xxx.ru/xxxx.php on line 155
Приложение в режиме теста, IFRAME, в настройках поставил требует установки с запросом прав на audio,video.
Аудио лежит у администратора приложения, id аудио и юзера ввожу правильно.
Честно - не понимаю как получить права на аудио, если в этом проблема.