Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> http://oauth.vk.com/blank.html как вытащить токен? 
:(
    Опции темы
nepster
Дата 3.7.2012, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Не получается получить токен. 

Следовал документации и получил следующий код:


Код

define('APP_ID', ***);
define('SECRET_KEY', '***');
define('SETTINGS', 'notify,friends,wall,messages,offline');
define('REDIRECT_URI', 'http://oauth.vk.com/blank.html');

$url = 'http://oauth.vk.com/authorize?client_id='.APP_ID.'&scope='.SETTINGS.'&redirect_uri='.REDIRECT_URI.'&display=popup&response_type=token';

echo '<a href="'.$url.'">'.$url.'</a>';


Что бы получить нужные методы (интересует wall.post), нужно использовать http://oauth.vk.com/blank.html
Но этот редиска возвращает токен, но никуда тебя не перенаправляет. Как можно получить токен в данной ситуации ?

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  1.jpg 54,33 Kb
PM MAIL   Вверх
Sanchezzz
Дата 3.7.2012, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



сперва вам нужно перейти по ссылки подтвердить свои права затем после подтверждения прав вас перенаправляет на свою страницу с CODE я рекомендую использовать response_type=code а не response_type=token для авторизации пользователей проще парсить в 

rederect_url рекомендую добавить свои параметры если вы будите делать на mailru twitter facebook авторизацию иначе отловить действие что и откуда не будет возможным
redirect_uri=http://ekar.kz/текушия страница ? authid=vk&state=уникальное значение для проверки от подмены сторонним лицом в faccebook рекомендует  ВК нет) state храним в сессиях потом при приеме токена сравниваем в ниже приведенном коде этого нет

Код

// это вывести на страницу как ссылку на войти / регистрация 
$url ="http://api.vk.com/oauth/authorize?client_id=". ( app_id ) 
                ."&redirect_uri=".( rederect_url )
                ."&display=page";

// это вывести поле <body> опытным путем доказано что нужно в документации халтура))
$data ='<div id="vk_api_transport"></div>
                <script type="text/javascript">
                  window.vkAsyncInit = function() {    VK.init({  apiId: '.( app_id ).'    }); };
                  setTimeout(function(){ var el = document.createElement("script");
                    el.type = "text/javascript"; el.src = "http://vkontakte.ru/js/api/openapi.js";
                    el.async = true; document.getElementById("vk_api_transport").appendChild(el);
                  }, 0);
                </script>';


это прием и получение токена.


Код

$url_ref = getenv("HTTP_REFERER"); // только у вконтакта есть HTTP_REFERER
//VK API
if (!empty($_GET['code']) && $url['host']=='oauth.vk.com'){
 $code = $_GET['code'];
            $res = file_get_contents(
                'https://api.vk.com/oauth/token?client_id='
                . (app_id) 
                . '&code='.$code.'&client_secret='
                . (app_secret) 
            );    
            $token = json_decode($res);
            $fealds = 'uid,first_name,last_name,nickname,screen_name,sex,bdate,city,country,timezone,photo,photo_medium,photo_big,has_mobile,rate,contacts,education,online,counters';
            $resp = file_get_contents('https://api.vkontakte.ru/method/getProfiles?uids='.$token->user_id.'&access_token='.$token->access_token . "&fields=".$fealds); 
            $data = json_decode($resp);
            
            $fealsd  =  array(
                'birth_time'=> $data->response[0]->bdate,
                'surname'=> $data->response[0]->last_name,
                'name'=> $data->response[0]->first_name,  
                'uid'=> $data->response[0]->uid,
                'mobile'=> $data->response[0]->mobile_phone,
                'phone'=> $data->response[0]->home_phone,
                'sex'=>   $data->response[0]->sex,
                'pwd'=>   '',
                'login'=> '',
                'avatar'=> $data2->response[0]->photo 
            );



Это сообщение отредактировал(а) Sanchezzz - 3.7.2012, 16:25


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
nepster
Дата 4.7.2012, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Код

<?php
define('APP_ID', ****);
define('SECRET_KEY', '****');

// это вывести на страницу как ссылку на войти / регистрация 
$url ="http://api.vk.com/oauth/authorize?client_id=".APP_ID."&redirect_uri=".REDIRECT_URI."&display=page";

// это вывести поле <body> опытным путем доказано что нужно в документации халтура))
$data ='<div id="vk_api_transport"></div>
                <script type="text/javascript">
                  window.vkAsyncInit = function() {    VK.init({apiId: '.APP_ID.'}); };
                  setTimeout(function(){ var el = document.createElement("script");
                    el.type = "text/javascript"; el.src = "http://vkontakte.ru/js/api/openapi.js";
                    el.async = true; document.getElementById("vk_api_transport").appendChild(el);
                  }, 0);
                </script>';
                
                
                
                
      echo '<a href="'.$url.'">'.$url.'</a>';         
                
      echo $data;     
     
     
            $code = $_GET['code'];
            $res = file_get_contents('https://api.vk.com/oauth/token?client_id='.APP_ID.'&code='.$code.'&client_secret='.SECRET_KEY);    
            $token = json_decode($res);
            
            
            $fealds = 'uid,first_name,last_name,nickname,screen_name,sex,bdate,city,country,timezone,photo,photo_medium,photo_big,has_mobile,rate,contacts,education,online,counters';
            $resp = file_get_contents('https://api.vkontakte.ru/method/getProfiles?uids='.$token->user_id.'&access_token='.$token->access_token."&fields=".$fealds); 
            $data = json_decode($resp);
            
            $fealsd  =  array(
                'birth_time'=> $data->response[0]->bdate,
                'surname'=> $data->response[0]->last_name,
                'name'=> $data->response[0]->first_name,  
                'uid'=> $data->response[0]->uid,
                'mobile'=> $data->response[0]->mobile_phone,
                'phone'=> $data->response[0]->home_phone,
                'sex'=>   $data->response[0]->sex,
                'pwd'=>   '',
                'login'=> '',
                'avatar'=> $data2->response[0]->photo 
            );
            
           $ms = 'Тест';
           $ms = file_get_contents('https://api.vkontakte.ru/method/wall.post?uids='.$token->user_id.'&access_token='.$token->access_token."&message=".$ms); 
            
            echo '<pre>';
                print_r( $fealsd);
            echo '</pre>';

            echo $ms;




Реферер пуст ( сделал так все шикарно работает. Единственное, что не получается аватарка (поле просто пустое (аватар установлен)) и 
при ф5, вылетает ошибка, я так понял коды меняются и нужно опять переходить по ссылке.  Подскажите пожалуйста, как проверку поставить
на то, если мы залогинены не обращаться по ссылкам, а то либо я могу понять, либо сонный в пол 5 утра ) За ранее спасибо )  
PM MAIL   Вверх
Sanchezzz
Дата 4.7.2012, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



то что вы написали выше конечто будет ошибка так как code не пришел
насчет картинки аватарки
Код

 'avatar'=> $data2->response[0]->photo

правильно 
Код

 'avatar'=> $data->response[0]->photo 


сылка должна содержать http://api.vk.com/oauth/authorize?client_i...mp;display=page 
tckb вы хотите использовать API как REST
для определение типа аутентификации используйте собственные параметры в REDIRECT_URI чтобы знать какой тип аунтификации использовать. 
//REDIRECT_URI = site.ru?appauth=vk // appauth=vk мы отловим как $_GET['appauth']=='vk'

Код

$url_ref = getenv("HTTP_REFERER");
 // должен если не показывает рефер то используйте свои костыли






--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
nepster
Дата 5.7.2012, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 26.4.2009

Репутация: нет
Всего: нет



Еще вчера все работало. Ничего не трогал. Настраивал фейс и твиттер.  Вот сейчас захожу и 

Код

{"error":"invalid_scope","error_description":"standalone applications should use blank.html as redirect_uri to access messages"}


К папке вк вообще не прикасался, собственно вот это и было, когда пытался их авторизацию auth 2.0 крутить. Как на скрине. Что это вообще за ***** ? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.