Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2016, 16:59   #1
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
Восклицание Авторизация ВК с помощью IdHttp

Помогите написать программу, которая авторизируется вконтакте. Для отправки/получения данных использую компонент IdHttp. Запрос делаю примерно так.

Код:
res := idHttp1.Get('https://oauth.vk.com/authorize?client_id='+client_id+'&redirect_uri=https://oauth.vk.com/blank.html&scope=12&display=page');
где переменная client_id - идентификатор приложения. На данном этапе мне нужно достать секретный код для дальнейшей авторизации и управления страницей с помощью VK API. Но в строку res функция Get передаёт какую-то абракадабру. Как правильно подать запрос, чтобы сервер в ответ отправил мне секретный код для дальнейшей авторизации?
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 27.03.2016, 17:06   #2
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Библиотеки для работы с ssl подключил?
vlad1389 вне форума Ответить с цитированием
Старый 27.03.2016, 17:14   #3
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
Сообщение от vlad1389 Посмотреть сообщение
Библиотеки для работы с ssl подключил?
Ах да, чуть не забыл. В программу подключил TIdSSLIOHandlerSocketOpenSSL и установил свойство IOHandle компонента IdHttp в IdSSLIOHandlerSocketOpenSSL1. По идее, должно работать, но я не знаю, как правильно отправить запрос и получить секретный код для авторизации.
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 27.03.2016, 17:24   #4
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Цитата:
По идее, должно работать
Не факт. Есть ещё такая вещь, как совместимость конкретной версии библиотеки с конкретной версией Indy. Ты проверь, грузится ли у тебя стартовая страница. По телу запроса ничего не подскажу, не довелось работать с VK. Но раз передаётся белиберда, то проблема или с ssl, или с распаковкой сжатого контента (gzip). Не плохо было бы увидеть headers ответа сервера.
vlad1389 вне форума Ответить с цитированием
Старый 27.03.2016, 17:52   #5
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Код:
Не плохо было бы увидеть headers ответа сервера
Перед тем как писать программу установил компоненты Indy 10 версии, так что, с этим проблем быть не должно. То, что в ответ приходит ерунда, может быть это связано, изначально, с неправильным запросом? Дело в том, что я понятия не имею как его правильно создавать, в документации ВК информации ноль, но ведь программы для работы с контактом существуют. На счёт headers, тоже не знаю, что это вообще такое. Одно могу сказать, присылает код HTML страницы. Могу выложить исходник без логина и пароля.
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 27.03.2016, 17:57   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут 10 или нет если речь о "совместимости конкретной версии библиотеки с конкретной версией Indy"
Цитата:
На счёт headers, тоже не знаю, что это вообще такое
Изучайте основы НТТР.
Цитата:
в документации ВК информации ноль
Да ну? У вас какая-то неправильная документация.
https://vk.com/dev/auth_mobile
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 27.03.2016 в 18:01.
Alex11223 вне форума Ответить с цитированием
Старый 27.03.2016, 18:10   #7
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
речь о "совместимости конкретной версии библиотеки с конкретной версией Indy"
Снова не понимаю тебя, какие библиотеки. По моему, все библиотеки устанавливаются в пакете с компонентами или ты имеешь в виду какие-то другие библиотеки? Ещё для работы TIdSSLIOHandlerSocketOpenSSL были нужны дээлелки, которые я добавил в папку с проектом, сейчас дам исходник.

Цитата:
Изучай основы НТТР.
А что первым делом надо изучить, скинь несколько ссылок, если можешь?
Сайт о программировании и трехмерной графике - cybersite.ucoz.net
cyberdev вне форума Ответить с цитированием
Старый 27.03.2016, 18:13   #8
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 156
По умолчанию

Авторизация в ВК обычно происходит малость по-другому. Берётся обычный twebbrowser или dcef, в нём грузится страница например:
Код:
auth.Chromium1.Load('https://oauth.vk.com/authorize?client_id='+appid+'&scope=friends,groups,offline&redirect_uri=https://oauth.vk.com/blank.html&display=popup&v=5.12&response_type=token');
где appid это ID твоего приложения. scope=... это разрешения, всё это есть в офф документации для standalone приложений.
Потом в веббраузере вводится пароль логин, пользователь соглашается с разрешениями, затем уже парсится сам URL, на который перенаправляет, он будет выглядеть примерно так:

Код:
https://oauth.vk.com/blank.html#access_token=многоразныхбукв&expires_in=0&user_id=123456789
т.е. всё что после "access_token=" и до "&" есть токен что будет указываться в каждом запросе. Насчёт прикрутить это всё под инди - довольно проблематично ибо кроме формы авторизации по этой ссылке может грузится страница с капчой и страница с разрешениями и т.д., да и oauth было для другого задумано.
DIONISKA вне форума Ответить с цитированием
Старый 27.03.2016, 18:31   #9
vlad1389
Форумчанин
 
Регистрация: 02.02.2016
Сообщений: 290
По умолчанию

Цитата:
Сообщение от cyberdev Посмотреть сообщение
На счёт headers, тоже не знаю, что это вообще такое.
А что такое поиск гугл, ты тоже не знаешь? Первая ссылка, если что.
Вдруг не найдёшь. Забыл про хитрые алгоритмы гугла.
Accept-Encoding смотри.

Последний раз редактировалось vlad1389; 27.03.2016 в 18:38.
vlad1389 вне форума Ответить с цитированием
Старый 27.03.2016, 18:38   #10
cyberdev
Форумчанин
 
Аватар для cyberdev
 
Регистрация: 10.10.2013
Сообщений: 150
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Авторизация в ВК обычно происходит малость по-другому. Берётся обычный twebbrowser или dcef, в нём грузится страница например:
Код:
auth.Chromium1.Load('https://oauth.vk.com/authorize?client_id='+appid+'&scope=friends,groups,offline&redirect_uri=https://oauth.vk.com/blank.html&display=popup&v=5.12&response_type=token');
где appid это ID твоего приложения. scope=... это разрешения, всё это есть в офф документации для standalone приложений.
Потом в веббраузере вводится пароль логин, пользователь соглашается с разрешениями, затем уже парсится сам URL, на который перенаправляет, он будет выглядеть примерно так:

Код:
https://oauth.vk.com/blank.html#access_token=многоразныхбукв&expires_in=0&user_id=123456789
т.е. всё что после "access_token=" и до "&" есть токен что будет указываться в каждом запросе. Насчёт прикрутить это всё под инди - довольно проблематично ибо кроме формы авторизации по этой ссылке может грузится страница с капчой и страница с разрешениями и т.д., да и oauth было для другого задумано.
С компонентом WebBrowzer пробовал, авторизация проходит, но как потом вытащить секретный код из url, точнее, как получить сам url с секретным кодом не знаю. В обычном браузере этот код появляется в адресной строке, а как его получить из WebBrowzer?

Ещё интересно, что такое dcef?
Сайт о программировании и трехмерной графике - cybersite.ucoz.net

Последний раз редактировалось cyberdev; 27.03.2016 в 18:48.
cyberdev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте idhttp Fahman Общие вопросы Delphi 21 10.01.2014 12:46
idHTTP + авторизация на Торренте?! Kudryavtsev Работа с сетью в Delphi 6 14.05.2011 23:13
IdHTTP и авторизация celovec Работа с сетью в Delphi 4 06.12.2010 21:33
Авторизация через Idhttp xakkkkker Работа с сетью в Delphi 1 08.02.2009 17:10
Авторизация выполена, но с ошибкой(idHTTP) KiDoki Работа с сетью в Delphi 2 06.12.2008 19:45