JustWasp

Рейтинг
0
Регистрация
30.01.2012

У меня проблема именно в автоматическом получении этого пресловутого токена. Зная ID и секретный ключ приложения вконтакт все равно не дает возможности получить токен через курл, из-за того что переадресует на свою страничку и в результате в курле ничего нет. Получив токен в ручном режиме с помощью стендалоне приложения можно легко постить на стену аккаунта или любой группы аккаунта вконтакта (в общем везде где будет установлено это приложение). Учитывая что контакт дает токен на 1 год, то это небольшая проблема но все равно не очень красивое решение.

Вдруг кто то решил эту проблему. Поделитесь :)

Насколько я понял мы обсуждаем постинг с сайта в контакте и все равно как это организовано. Если вы предложите путь каким образом это можно совершить не с помощью стендалоне-приложения я буду только рад :) Несколько дней пытаюсь запостить чтото себе в группу, и получилось только с помощью стендалоне приложения.

---------- Добавлено 31.01.2012 в 21:16 ----------

Тем более что, как писали в теме выше, постить на стену могут только стеналоне приложения

Sveta Prokopeva:
JustWasp, вы немножко запутались в механизме получения токена. Аксес-токен получается после того, как пользователь попал на страницу http://localhost/black.html?code=1sdfad3124, после того как разрешил доступ к запрашиваемым данным. Смотрите пункт два в моём первом посте.
И указывайте редирект урл полносью, раньше это имело значение. Сейчас точно не скажу.

Согласно документации Вконтакта (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, но изза внутреннего вконтактовского редиректа это сделать не получается.

Sveta Prokopeva:
JustWasp, необходимо указывать редирект урл полностью с http:// и так далее

Разницы нет: что полностью, что просто ссылка на blank.html. Все равно вконтакт делает редирект и получить курлом код для последующего получения токена не представляется возможным.
Sveta Prokopeva:
JS авторизация это полная ерунда, не используйте её. Она очень ограничена и работа с ней не логична. Используйте авторизацию с использованием приложения. Просите у пользователя права какие вам нужны, и будет вам счастье.
Если по шагам, то:
1) Нужно закинуть пользователя на страничку
http://api.vkontakte.ru/oauth/authorize?client_id=VK_APP_ID&scope=offline&redirect_uri=http://localhost/login/vk&response_type=code
2) После этого получаем токен
https://api.vkontakte.ru/oauth/access_token?client_id=VK_APP_ID&client_secret=VK_SECRET_KEY&code=$code
3) Получаем общую информацию о пользователе
https://api.vkontakte.ru/method/getProfiles?uid=$user_id&fields=first_name,last_name,photo,bdate,sex&access_token=$token
4) Постим на стену, постим фотки всё что нужно, подробно описано в документации апи. Не забываем просить права на то что хотим делать в первом пункте (scope)

---------- Добавлено 27.01.2012 в 13:51 ----------

Так, прошу прощения, по-моему, я выдала слишком много не нужной информации по причине не внимательного чтения первого поста )
Возможно у вас не получается запостить на стену потому что вы не просите права доступа в любое время суток? Или не получается запостить даже когда пользователь онлайн?

Затык получается как раз в первом пункте, при попытке выполнить код вида


$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

То получаем на пустой страничке код и используя его получаем токен и дальше уже постим на стену и в группу, а вот автоматически получить код не получается.