Страница 10 из 12
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 18 окт 2012, 21:12
Александр
Fedya
Может быть. Пробуй. Выясни на какой конкретно строчке кода возникает проблема и почему.
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 16:01
heartfulbird
У меня работает с вашим адресом сайта в config.php
Код: Выделить всё
define("PATH", "http://flapps.ru/example/oauth20/");
а при смене на адрес моего сайта дохожу до страницы где спрашиваются права - жму разрешить и перехожу на callback.php и она пустая. В адресной строке callback.php?code=КОД КОТОРЫЙ Я ПОЛУЧИЛ
и все на index не переходит. Не подскажите почему так происходит
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 16:08
Александр
heartfulbird
Нужно смотреть на какой строке кода прекращается работа в фале callback.php. Потом нужно разобраться почему именно на этой строке что-то идёт не так как надо.
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 16:59
heartfulbird
в callback я получаю CODE , a token не получаю. где дальше докопаться?
тот же charles установил. но у меня честно говоря не получается найти настроек которые описаны в этой теме
http://flapps.ru/forum/topic881.html ни для оперы ни для хрома.
и еще возможно ли что я как бы получил токен для вашего сервера. может он пока не истечет мне ничего и не сделать? и разлогиниться никак
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 17:10
Александр
heartfulbird
Код: Выделить всё
$resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET);$data = json_decode($resp, true);print_r($data);
что выводит?
Chrome не нужно дополнительно настраивать для Charles. Запустить Chrome и Charles, включить захват трафика - всё должно работать. Но запросы которые отправляет сервер, с помощью Charles ловить не получится.
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 17:16
heartfulbird
Вновь пустой экран. Не вывел ничего
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 17:32
Александр
heartfulbird
Значит и code не передается. Надо тестировать, проверять и проверять. echo и print_r в помощь.
Код: Выделить всё
<?require_once("config.php"); echo '1<br />';if($_REQUEST['code']) { echo '2 - '; print_r($_REQUEST); echo '<br /><br />'; // получаем access_token $resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET); $data = json_decode($resp, true); echo '3 - '; print_r($data); echo '<br /><br />'; if($data['access_token']){ echo '4'; echo '<br /><br />'; // запишем данные в сессию $_SESSION['access_token'] = $data['access_token']; $_SESSION['user_id'] = $data['user_id']; // переадресуем пользователя на нужную страницу //header('Location: '.PATH.'index.php'); exit(); }}?>
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 03 ноя 2012, 17:37
heartfulbird
Ну я просто даже как в предыдущих примерах ставил echo в разные части скрипта. Попробую еще потестить. Спасибо
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 04 ноя 2012, 13:58
heartfulbird
Я у вас в уроке ошибку нашел. Или просто более актуальная информация. В callback.php в строчке $resp = file_get_contents('https://... надо передавать redirect_uri тоже
Получится так:
Код: Выделить всё
$resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET.'&redirect_uri='.PATH.OAUTH_CALLBACK);
теперь работает. В документации VK для серверной авторизации написано может она обновлялась.
Но вот еще вопрос: почему ***выбираем «Standalone-приложение»***. Ведь серверная авторизация для подключения сайтов (Authorization Code Flow) - при создании приложения выбираем "Веб-сайт" .
Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0
Добавлено: 04 ноя 2012, 15:30
Александр
heartfulbird
Да, не то написал. Надо выбирать «Веб-сайт». В Standalone передается response_type=token, а в авторизации для сайтов response_type=code.
Проверил старый исходник, работает и без указания REDIRECT_URI в callback.php. Может быть поменялось, а может быть и я это тогда упустил.