![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Atum |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Пытаюсь разобраться с API контакта и как с ним работать из java .
Но знаний и информации по этой теме недостаточно . что хочется получить ?! есть задача - авторизоваться пользователем и дать доступ своему приложению .... После авторизации получать сообщения пользователя ... иметь возможность из добавлять , удалять и восстанавливать. что есть ... и какие проблемы возникли ... первое - это вход в контакт ... в описании API предлагают создать Браузер для авторизации если брать простой JEditorPane и ставить ему setPage(url); то он некорректно отображает содержимое . и непонятно как он будет работать и как ждать от него ответ ... Я хочу пойти по другому пути ... пока у меня не будет клиентского GUI ... все операции ходу делать из когда и консоли ... для начала взял за основу ... HttpClient от apache 1. Авторизация
получаем в response страницу авторизации ... вопрос как автоматически заполнить поля адреса и пароля и нажать на кнопку вход? 2. Авторизация Desktop приложения как описано в API для создания приложения надо получить id приложения , и дать ему доступ к сообщениям - выставить маску 4096 т.е. мое приложение должно авторизоваться по следующему URL http://vkontakte.ru/login.php? app=11111&layout=popup&type=browser&settings=4096 у меня есть ID моего приложения: 11111 , есть Защищенный ключ. Вызываю точно такой же код но с новой ссылкой - получаю в ответ страницу с требованием ввести логин пароль и кнопкой разрешить приложению доступ к моей информации...
в вопрос все тот же как теперь ввести логин пароль и отправить данные и разрешить доступ. в Описании сказано что в ответ я должен буду получить
вот с этого Момента я уже ничего не понимаю что делать ...
Какие параметры необходимо передавать при запросе? подпись запроса создается сервером или руками? sig = md5(midname1=value1name2=value2secret) Самые для меня важные вопросы как вызывать функции messages.get messages.send – посылает сообщение. messages.delete – удаляет сообщение. messages.restore – восстанавливает только что удаленное сообщение. Какой библиотекой пользоваться (Хочется примера и код) Все кто можем помощь чем либо - буду очень признателен. |
||||||||
|
|||||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
На лицо явное непонимание того как работает браузер. Никаких полей заполнять не нужно, нужно послать GET или POST запрос с нужными полями. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Хорошо , я уточняю ... пытаюсь заполнить поля таким образом ....
но чего то явно не хватает ?... и к примеру как нажать на кнопку разрешить? что мы должны получить в ответ ?! - пишут что ссылку с редиректом ... и параметрами сессии как их вытащить? и пользоваться... Очень хочется увидеть ПРИМЕР ! хотя бы два запроса - один на авторизацию - второй на получение сообщений чтобы понять как это организовать . |
|||
|
||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
Делается это так, ставится снифер, например HttpWatch.
Заходишь на сайт, и смотришь в снифире какие данные к каким полям формы отправляются, соответственно прописываешь их в апликухе. Далее смотришь что возвращается (куки там, идентификатор сессии, еще что-нибудь) и прописываешь их у себя. По сути программа имитирует пользователя, отправляет запросы - получает ответы, если заполнишь правильно все http header'ы то для сайта это будет выглядеть как пользователь с указанного в хедерах браузера. -------------------- ![]() |
|||
|
||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
-------------------- ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Hidrag, все верно описал, для случая когда ты пытаешься имитировать пользователя. Ну разве что кроме того, что возможно еще потребуется UserAgent поставить.
Но ты вроде писал, что пытаешься использовать API контакта, а там уже все может быть по другому. Надо смотреть документацию. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
смотрю документацию и ничего не могу понять ... потому что опыта работы с сетью и браузерами практически нет (совсем нет).
Поэтому и хочется увидеть один пример - с двумя запросами - авторизацией - получением ответа ... анализом ответа ... и посылкой следующего запроса ... итд... странно что тема социальных сетей очень популярная .... но вот красивых и прозрачных примеров нигде нет... ибо те люди которые в этом хорошо разбираются понимают это все очень хорошо, и им такие документы ненужны... а что делать таким кто только начинает разбираться в премудростях работы сетей ?! |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Может стоит начать с ответа на вопрос какой из двух вариантов работы с вконтегом ты выбрал?
![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
смотрю документацию и ничего не могу понять ... потому что опыта работы с сетью и браузерами практически нет (совсем нет).
Поэтому и хочется увидеть один пример - с двумя запросами - авторизацией - получением ответа ... анализом ответа ... и посылкой следующего запроса ... итд... странно что тема социальных сетей очень популярная .... но вот красивых и прозрачных примеров нигде нет... ибо те люди которые в этом хорошо разбираются понимают это все очень хорошо, и им такие документы ненужны... а что делать таким кто только начинает разбираться в премудростях работы сетей ?! Добавлено через 51 секунду Думаю я определился - будет POST. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Еще раз: ты будешь имитировать пользователя или использовать API вконтега для внешних приложений (в этом случае не помешала бы ссылка на документацию)?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Хочу использовать API
вот линк http://vkontakte.ru/developers.php?id=-1_21239305&s=1 Это сообщение отредактировал(а) Atum - 25.11.2010, 15:44 |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Atum, а зачем? Мне вообще удивительно, что они предоставляют такое API. Все эти сети живут с рекламы, очевидно, которую они добавляют в свой интерфейс. Предоставление возможности использования другого интерфейса, неконтролируемого владельцем сети, снижает, по идее, их доходы. Кроме того, расширяет возможности нелегитимного использования сети. Рассылка спама, например. |
|||
|
||||
Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
занимаюсь самообразованием. |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
1. Авторизуешься:
Handling redirects manually 2. Из locationHeader получаешь значение параметра session и распарсиваешь его как JSON. 3. Формируешь необходимые параметры. Они перечислены в Какие параметры необходимо передавать при запросе? и плюс параметры необходимые для вызываемого метода (в примере это были uids и fields. И засовываешь их в SortedMap, затем вычисляешь sig
После чего можешь посылать POST или GET на http://api.vkontakte.ru/api.php с этими параметрами. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
Atum |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
LSD, огромное спасибо за пример .
Первая трудность с которой пришлось столкнуться - locationHeader null
Делаю первый запрос с помощью GET как описано в api но не получаю никаких параметров
как я понимаю тут должно быть три основных шага ... первый пусть будет по get и два по пост : Первый авторизация нашего приложения :
в ответе мы должны получить app_hash параметр второе отправить POST запрос на страницу http://login.vk.com/ после чего получить новое значение app_hash (авторизация пользователя его маил и логин )
отправить POST запрос на страницу vkontakte.ru/login.php, где мы уже будем получать данные сессии путем парсинга.
где expire – Время истечения сессии в формате UNIX mid – ID пользователя в ВКонтакте secret – Специально сгенерированный секрет сессии sid – Идентификатор сессии Это сообщение отредактировал(а) Atum - 3.12.2010, 19:38 |
||||||||||||
|
|||||||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |