Russian Qt Forum

Qt => Работа с сетью => Тема начата: PinkPanther от Апрель 28, 2010, 23:06



Название: Авторизация средствами QNetworkAccessManager
Отправлено: PinkPanther от Апрель 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?
Какие переменные заполнить значениями логина & пароля? Куда их поместить?


Название: Re: Авторизация средствами QNetworkAccessManager
Отправлено: Vass от Апрель 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/


Название: Re: Авторизация средствами QNetworkAccessManager
Отправлено: PinkPanther от Апрель 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 - спасибо, прочту обязательно! Очень актуально.