Страница 1 из 2

Не работает авотризация oauth. В чем проблема?

Добавлено: 18 сен 2012, 20:35
ansoffov
Пример взял на этом форуме, немного переделал его, сначала все работало замечательно, потом работать перестало.
Зарегистрировал новый сайт, создал standalone приложение вконтакте

На свой сайт выкладываю два файла

config.php

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

 <?/* http://flapps.ru/forum/ - форум о создании приложений */ // id приложенияdefine("CLIENT_ID", "XXXXXXXX");// защищенный ключdefine("SECRET", "XXXXXXXXXXXXXX");// куда перенаправим пользователя после авторизацииdefine("OAUTH_CALLBACK", "index.php");// настройки доступаdefine("SCOPE", "friends,photos,wall");// путь к папке со скриптамиdefine("PATH", "http://domain.ru"); // включим сессиюsession_start();?> 
index.php

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

 <?require_once("config.php"); if(isset($_GET['logout'])){    unset($_SESSION['access_token']);    unset($_SESSION['user_id']);} //получили параметр codeif($_REQUEST['code']) {    $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);     if($data['access_token']){        // запишем данные в сессию        $_SESSION['access_token'] = $data['access_token'];        $_SESSION['user_id'] = $data['user_id'];        }} //Если доступ есть, получаем необходимые данныеif(isset($_SESSION['access_token'])) {     //получим профиль пользователя    $uid = $_SESSION['user_id'];    $resp = file_get_contents('https://api.vk.com/method/getProfiles?uids='.$uid.'&fields=photo_big&access_token='.$_SESSION['access_token']);    $data = json_decode($resp, true);        //Если пользователь существует, обновляем данные, если нет добавляем нового} ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Документ без названия</title></head> <body> <? if(isset($_SESSION['access_token'])) {     //print_r($data); // расскоментировать эту строчку, чтобы увидеть ответ сервера    // вывеедм полученные данные        echo 'Имя '.$data[response][0][first_name];    echo '<br />Фамилия '.$data[response][0][last_name];    echo '<br /><img src="'.$data[response][0][photo_big].'" />';            echo '<div align="left">Id'.$uid.'</div>';    echo '<div align="left"><a href="index.php?logout" />Выход</a></div>';       }else { //Выдаем ссылку на авторизацию $link = "'http://api.vk.com/oauth/authorize?client_id=".CLIENT_ID."&redirect_uri=".PATH.OAUTH_CALLBACK."&display=popup&scope=".SCOPE."&response_type=code';";echo '<button onclick="location.href='.$link.'">Войти ВКонтакте</button>';     } ?></body></html> 
Сервер возвращает ошибку
[17-Sep-2012 16:13:01] PHP Warning: file_get_contents(https://api.vk.com/oauth/access_token?c ... XXXXXXXXXX) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in public_html/index.php on line 13

Подскажите куда смотреть?

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 18 сен 2012, 21:19
Александр
ansoffov
На сервере разрешено использовать file_get_contents ?
Что если попробовать перейти по этой ссылке прямо из браузера?

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 19 сен 2012, 07:48
ansoffov
{"error":"invalid_client","error_description":"client_secret is undefined"}

Вот такая вот ошибка, 1000 раз проверил секретный код. Копирую прямо из приложения вконтакте...

$_REQUEST['code'] - выдается всегда новый, как и должно быть

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 19 сен 2012, 14:37
Александр
ansoffov
Если в этом коде ничего кроме данных приложения не менять, то все работает? http://flapps.ru/forum/topic3931.html

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 19 сен 2012, 15:49
ansoffov
Да, совсем забыл сказать. Пробовал этот код, изменял только данные приложения, также не работает. Проверял на двух хостингах.

Ошибка та же самая. (((

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 19 сен 2012, 20:16
Александр
ansoffov писал(а):Проверял на двух хостингах.
Хотя бы на одном из них разрешено использовать file_get_contents ? Если бесплатные, то скорее всего не разрешено.

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 20 сен 2012, 06:39
ansoffov
Так, на сколько я понимаю, данная ошибка:

{"error":"invalid_client","error_description":"client_secret is undefined"}

говорит о том что дело не в этой функции ?
Проверял и на платном хостинге, в техподдержке посоветовали использовать curl

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 20 сен 2012, 14:09
Александр
ansoffov писал(а):Сервер возвращает ошибку
[17-Sep-2012 16:13:01] PHP Warning: file_get_contents(https://api.vk.com/oauth/access_token?c ... XXXXXXXXXX) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in public_html/index.php on line 13
вот такую ошибку, как я понял, возвращает сервер.
ansoffov писал(а):{"error":"invalid_client","error_description":"client_secret is undefined"}
эту ошибку видно, если перейти по ссылке прямо в браузере. Не так?

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

echo file_get_contents('http://flapps.ru');
Работает?
ansoffov писал(а):в техподдержке посоветовали использовать curl
Если это решит проблему, то можно использовать curl.

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 20 сен 2012, 15:02
ansoffov
В том то и дело что важно не использовать cURL
Насчет ошибок вы все правильно поняли

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

echo file_get_contents('http://flapps.ru'); 
Прекрасно работает.

Re: Не работает авотризация oauth. В чем проблема?

Добавлено: 20 сен 2012, 21:19
Александр
ansoffov
А из этого что-нибудь возвращает ответ от сервера api?

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

echo file_get_contents('https://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485'); echo file_get_contents('http://api.vk.com/method/likes.getList?type=sitepage&owner_id=1942958&page_url=http://flapps.ru/vk-gifts/gift485'); echo file_get_contents('https://api.vk.com/method/likes.getList');