Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Готовые уроки IFrame + ВКонтакте API
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение Александр »

Fedya
Может быть. Пробуй. Выясни на какой конкретно строчке кода возникает проблема и почему.
heartfulbird
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение heartfulbird »

У меня работает с вашим адресом сайта в config.php

Код: Выделить всё

define("PATH", "http://flapps.ru/example/oauth20/");
а при смене на адрес моего сайта дохожу до страницы где спрашиваются права - жму разрешить и перехожу на callback.php и она пустая. В адресной строке callback.php?code=КОД КОТОРЫЙ Я ПОЛУЧИЛ
и все на index не переходит. Не подскажите почему так происходит
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение Александр »

heartfulbird
Нужно смотреть на какой строке кода прекращается работа в фале callback.php. Потом нужно разобраться почему именно на этой строке что-то идёт не так как надо.
heartfulbird
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение heartfulbird »

в callback я получаю CODE , a token не получаю. где дальше докопаться?
тот же charles установил. но у меня честно говоря не получается найти настроек которые описаны в этой теме http://flapps.ru/forum/topic881.html ни для оперы ни для хрома.

и еще возможно ли что я как бы получил токен для вашего сервера. может он пока не истечет мне ничего и не сделать? и разлогиниться никак
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение Александр »

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 ловить не получится.
heartfulbird
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение heartfulbird »

Вновь пустой экран. Не вывел ничего
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение Александр »

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();    }}?>
heartfulbird
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение heartfulbird »

Ну я просто даже как в предыдущих примерах ставил echo в разные части скрипта. Попробую еще потестить. Спасибо
heartfulbird
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение 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) - при создании приложения выбираем "Веб-сайт" .
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Серверная авторизация ВКонтакте на базе протокола OAuth 2.0

Сообщение Александр »

heartfulbird
Да, не то написал. Надо выбирать «Веб-сайт». В Standalone передается response_type=token, а в авторизации для сайтов response_type=code.

Проверил старый исходник, работает и без указания REDIRECT_URI в callback.php. Может быть поменялось, а может быть и я это тогда упустил.
Ответить