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

Готовые уроки IFrame + ВКонтакте API

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

Сообщение Александр » 18 окт 2012, 21:12

Fedya
Может быть. Пробуй. Выясни на какой конкретно строчке кода возникает проблема и почему.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение heartfulbird » 03 ноя 2012, 16:01

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

а при смене на адрес моего сайта дохожу до страницы где спрашиваются права - жму разрешить и перехожу на callback.php и она пустая. В адресной строке callback.php?code=КОД КОТОРЫЙ Я ПОЛУЧИЛ
и все на index не переходит. Не подскажите почему так происходит
heartfulbird

 
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

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

Сообщение Александр » 03 ноя 2012, 16:08

heartfulbird
Нужно смотреть на какой строке кода прекращается работа в фале callback.php. Потом нужно разобраться почему именно на этой строке что-то идёт не так как надо.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение heartfulbird » 03 ноя 2012, 16:59

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

и еще возможно ли что я как бы получил токен для вашего сервера. может он пока не истечет мне ничего и не сделать? и разлогиниться никак
heartfulbird

 
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

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

Сообщение Александр » 03 ноя 2012, 17:10

heartfulbird
  1. $resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET);
  2. $data = json_decode($resp, true);
  3. print_r($data);

что выводит?

Chrome не нужно дополнительно настраивать для Charles. Запустить Chrome и Charles, включить захват трафика - всё должно работать. Но запросы которые отправляет сервер, с помощью Charles ловить не получится.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение heartfulbird » 03 ноя 2012, 17:16

Вновь пустой экран. Не вывел ничего
heartfulbird

 
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

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

Сообщение Александр » 03 ноя 2012, 17:32

heartfulbird
Значит и code не передается. Надо тестировать, проверять и проверять. echo и print_r в помощь.

  1. <?
  2. require_once("config.php");
  3.  
  4. echo '1<br />';
  5. if($_REQUEST['code']) {
  6.     echo '2 - ';
  7.     print_r($_REQUEST);
  8.     echo '<br /><br />';
  9.    
  10.     // получаем access_token
  11.     $resp = file_get_contents('https://api.vk.com/oauth/access_token?client_id='.CLIENT_ID.'&code='.$_REQUEST['code'].'&client_secret='.SECRET);
  12.     $data = json_decode($resp, true);
  13.  
  14.     echo '3 - ';
  15.     print_r($data);
  16.     echo '<br /><br />';
  17.  
  18.     if($data['access_token']){
  19.         echo '4';
  20.         echo '<br /><br />';
  21.         // запишем данные в сессию
  22.         $_SESSION['access_token'] = $data['access_token'];
  23.         $_SESSION['user_id'] = $data['user_id'];
  24.         // переадресуем пользователя на нужную страницу
  25.         //header('Location: '.PATH.'index.php');
  26.         exit();
  27.     }
  28. }
  29. ?>
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение heartfulbird » 03 ноя 2012, 17:37

Ну я просто даже как в предыдущих примерах ставил echo в разные части скрипта. Попробую еще потестить. Спасибо
heartfulbird

 
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

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

Сообщение heartfulbird » 04 ноя 2012, 13:58

Я у вас в уроке ошибку нашел. Или просто более актуальная информация. В callback.php в строчке $resp = file_get_contents('https://... надо передавать redirect_uri тоже
Получится так:
  1. $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) - при создании приложения выбираем "Веб-сайт" .

За это сообщение автора heartfulbird поблагодарили - 4:
Александр, seokay, slimvm, T710MA
heartfulbird

 
Сообщения: 8
Зарегистрирован: 11 сен 2012, 00:19
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

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

Сообщение Александр » 04 ноя 2012, 15:30

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

Проверил старый исходник, работает и без указания REDIRECT_URI в callback.php. Может быть поменялось, а может быть и я это тогда упустил.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Пред.След.

Вернуться в Уроки IFrame ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0