У меня проблема именно в автоматическом получении этого пресловутого токена. Зная ID и секретный ключ приложения вконтакт все равно не дает возможности получить токен через курл, из-за того что переадресует на свою страничку и в результате в курле ничего нет. Получив токен в ручном режиме с помощью стендалоне приложения можно легко постить на стену аккаунта или любой группы аккаунта вконтакта (в общем везде где будет установлено это приложение). Учитывая что контакт дает токен на 1 год, то это небольшая проблема но все равно не очень красивое решение.
Вдруг кто то решил эту проблему. Поделитесь :)
Насколько я понял мы обсуждаем постинг с сайта в контакте и все равно как это организовано. Если вы предложите путь каким образом это можно совершить не с помощью стендалоне-приложения я буду только рад :) Несколько дней пытаюсь запостить чтото себе в группу, и получилось только с помощью стендалоне приложения.---------- Добавлено 31.01.2012 в 21:16 ----------Тем более что, как писали в теме выше, постить на стену могут только стеналоне приложения
Согласно документации Вконтакта (http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)
1. Открытие диалога авторизации OAuth
Для начала процесса авторизации необходимо создать окно браузера и открыть в нём диалог авторизации с параметром response_type = token по адресу:
http://oauth.vkontakte.ru/authorize?
client_id=APP_ID&
scope=SETTINGS&
redirect_uri=REDIRECT_URI&
display=DISPLAY&
response_type=token
APP_ID – идентификатор Вашего приложения;
SETTINGS – запрашиваемые права доступа приложения;
DISPLAY – внешний вид окна авторизации, поддерживаются: page, popup, touch и wap.
REDIRECT_URI – адрес, на который будет передан access_token. Если Вы разрабатываете браузерное Javascript-приложение, то можно указывать любую ссылку в рамках домена, указанного в настройках приложения. Во всех остальных случаях в качестве redirect_uri нужно использовать адрес http://oauth.vkontakte.ru/blank.html.
Если использовать в качестве redirect_uri локальный адрес, а не http://oauth.vkontakte.ru/blank.html, то вконтакт выдает ошибку получения разрешений для отправки сообщений (messages). А если из scope убрать запрос на messages и оставить только wall, то запостить на стену невозможно (почему - не знаю, но это так). То есть wall.post находится под разрешениями messages.
Вот я и пытался курлом получить то что он отправлять на этот blank.html, но изза внутреннего вконтактовского редиректа это сделать не получается.
Затык получается как раз в первом пункте, при попытке выполнить код вида
$data = array( 'client_id'=>'2770704', 'scope'=>'photos,offline,wall,groups,messages', 'redirect_uri'=>'blank.html', 'response_type'=>'code' ); $url = "http://api.vkontakte.ru/oauth/authorize"; $ch = curl_init(); url_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_TIMEOUT, 40); сurl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $r = curl_exec($ch); $response = json_decode($r); curl_close($ch);
в ответе ничего нет, а если ставить 'redirect_uri' страничку своего сайта то вконтакт не позволяет пользоваться wall,groups,messages и отправить сообщение нельзя.
Если просто вызвать в браузере
http://api.vkontakte.ru/oauth/authorize?client_id=2770704&scope=photos,offline,wall,groups,messages&redirect_uri=blank.html&response_type=code
То получаем на пустой страничке код и используя его получаем токен и дальше уже постим на стену и в группу, а вот автоматически получить код не получается.