Russian Qt Forum
Сентябрь 30, 2024, 18:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Авторизация средствами QNetworkAccessManager  (Прочитано 4438 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Апрель 28, 2010, 23:06 »

Добрый вечер!
Потребовалось написать клиент для простейших операций с twitter, службой микроблогов, и возникли сложности.
У twitter есть свой API, и сообщение в блог можно добавить, например, средствами Curl:
Код:
curl --basic --user username:password --data status="Having fun with cURL" http://twitter.com/statuses/update.xml
Этот пример отлично работает, и если бы всё было ОК, можно было бы просто создать длинный командный .bat с такими командами.
Но этот пример работает лишь в случае, если сообщение на английском. Если текст на русском, в микроблог попадает мусор.
QUrl::toPercentEncode() тоже не помогла - в микроблог попадает длинная строка типа B0780C93A6A10812 и т.д.

Вопрос, собственно, такой: каким образом реализовать курловское залогинивание средстами QNetworkAccessManager?
Какие переменные заполнить значениями логина & пароля? Куда их поместить?
Записан

Эвтаназия - наше хобби!
Vass
Гость
« Ответ #1 : Апрель 29, 2010, 20:47 »

Когда Вы делаете запрос с помощью QNetworkAccessManager Вы передаете ему QNetworkRequest, который в свою очередь получает при создании в конструктор QUrl, у QUrl есть методы setUsername setPassword они Вам и нужны, впрочем Вы можете просто создать QUrl  с параметром строки адреса вида:
Код:
http://username:password@twitter.com/statuses/update.xml?staus=SomeText

НО! Авторизация через HTTP Headers в Twitter опмечена как устаревшая и перестанет работать с конца июня сего года, авторизацию приложений рекомендуется производить по протоколу OAuth,
Вот здесь Вы можете прочитать мою статью про Qt, Twitter и OAuth:
http://habrahabr.ru/blogs/development/86846/
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #2 : Апрель 30, 2010, 10:11 »

Когда Вы делаете запрос с помощью QNetworkAccessManager Вы передаете ему QNetworkRequest, который в свою очередь получает при создании в конструктор QUrl, у QUrl есть методы setUsername setPassword они Вам и нужны, впрочем Вы можете просто создать QUrl  с параметром строки адреса вида:
Код:
http://username:password@twitter.com/statuses/update.xml?staus=SomeText

НО! Авторизация через HTTP Headers в Twitter опмечена как устаревшая и перестанет работать с конца июня сего года, авторизацию приложений рекомендуется производить по протоколу OAuth,
Вот здесь Вы можете прочитать мою статью про Qt, Twitter и OAuth:
http://habrahabr.ru/blogs/development/86846/

Про QUrl - исключительно полезная информация, не знал и копал совсем в другом месте. Большое спасибо!
Про QAuth - спасибо, прочту обязательно! Очень актуально.
Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.