Название: QNetworkAccessManager Авторизация youtube.com Отправлено: vdmitij от Февраль 19, 2012, 02:48 Пытаюсь авторизироваться на ютубе. Выходит, примерно, такой код:
Код: void MainWindow::on_loginButton_clicked() В чем может быть проблема? Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Bepec от Февраль 19, 2012, 11:33 Смотришь последние строчки и открываешь ассистант
void appendHtml ( const QString & html ) void appendPlainText ( const QString & text ) Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: thechicho от Февраль 20, 2012, 00:06 урл должен быть декодированным, менагер его походу сам кодирует.
https://accounts.google.com/ServiceLogin?uilel=3&service=youtube&passive=true&continue=http://www.youtube.com/signin?action_handle_signin=true&nomobiletemp=1&hl=ru_RU&next=/?noredirect=1&hl=ru_RU<mpl=sso либо пиши QUrl::fromPercentEncoding(кодированный урл); пробуй, отписывай, дальше посмотрим Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Bepec от Февраль 20, 2012, 06:53 Та тут всё просто до безумия - он не HTML вставляет в поле, а голый текст. И потому видит исходный код страницы.
Нетворк менеджер не кодирует его. Он просто возвращает нормальный URL ;) Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: thechicho от Февраль 20, 2012, 11:01 нифига. я кодированный вставлял, бывало не прокатывало. т.е. если на сервере стоит проверка параметров, а они еще раз кодируются менагером, в результате проверка не проходит. если декодированный давать, то норм всегда проходило. чисто опытным путем - менагер url encode делает.
Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: ernie от Февраль 21, 2012, 05:48 День добрый.Мне кажется у вас какой-то странный адрес для логина на youtube,мой код для авторизации :
QNetworkRequest request; request.setUrl(QUrl(QString("https://www.google.com/youtube/accounts/ClientLogin"))); request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); QString username = Config::getValue("username"); QString password = Config::getValue("password"); QString r = QString("Email=%1&Passwd=%2&service=youtube&source=source").arg(username,password); QByteArray reqString(r.toUtf8()); m_networkManager = new QNetworkAccessManager(); QNetworkReply *reply = m_networkManager->post(request,reqString); reply->ignoreSslErrors(); connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(handleNetworkReply(QNetworkReply*))); Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: thechicho от Февраль 21, 2012, 11:15 QByteArray postData = "Email=" + username.toUtf() + "&Passwd=" + password.toUtf() + "&service=youtube&source=source";
Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: ernie от Февраль 21, 2012, 13:38 thechicho,да можно и так:)я просто из рабочего проекта выдернул кусок.
еще source - это название приложение,я в своё время регистрировал его на youtube,не знаю,нужно ли это сейчас Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Март 14, 2012, 20:46 Здраствуйте, я вот отправляю запрос для того что бы залогиниться.
В ответ получаю как и положено: SID=DQAAALQAAAA6wx7byZp-s4BizDqS1OaT21j9dmY6wMjexpQdNC3 LSID=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_0vh-4XbUedCN9XTZ Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU Потом для проверки делаю запрос на список загруженых видео юзера. https://gdata.youtube.com/feeds/api/users/default/uploads с подстановкой в хедер запроса Authorization: GoogleLogin auth=<authentication_token> X-GData-Key: key=<developer_key> Код
но в ответ получаю: 302 Moved <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.com">here</A>. </BODY></HTML> В чем дело? в кого работает? Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Март 16, 2012, 13:23 Ребята, помогите, пожалуйста!
Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Март 16, 2012, 19:57 Ах, бля! Забил удалить символ переноса на новую строку (в auth) и из за этого не пропускало!
А так все работает!!! Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Bepec от Март 16, 2012, 19:58 Мы тебе помогли :) мы переживали за тебя :) Спасибо нам!
Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: brucemax от Июнь 06, 2012, 17:10 Код
но в ответ получаю: 302 Moved <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.com">here</A>. </BODY></HTML> ... Спасибо. Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Июнь 07, 2012, 01:51 Код
но в ответ получаю: 302 Moved <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.com">here</A>. </BODY></HTML> ... Спасибо. getAuthToken() - ето Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: brucemax от Июнь 07, 2012, 09:30 getAuthKey() - возвращает ключ девелопера, который надо зарегистрировать. getAuthToken() - ето Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU P.S. Я только пару дней назад начал с запросами разбираться.. а вот на таких примерах само то.. Вопросов туча.. как ты например узнал адрес для запроса видео ("Потом для проверки делаю запрос на список загруженых видео юзера. https://gdata.youtube.com/feeds/api/users/default/uploads")? Если есть какая статья об этом - пните почитать=) Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Июнь 07, 2012, 12:44 Есть официальный манул от гугла для ютуба https://developers.google.com/youtube/reference?hl=ru Вот главный источник информации!
Принцип действия getAuthToken() следующий: Поскольку мы имеем следующую структуру ответа: Цитировать SID=DQAAALQAAAA6wx7byZp-s4BizDqS1OaT21j9dmY6wMjexpQdNC3 LSID=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_0vh-4XbUedCN9XTZ Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU то я просто в QString нахожу индексы "Auth=" и "\n" , а потом вырезаю нужный участок строки. И готово! Реализацию скину вечером, если надо..... Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: brucemax от Июнь 07, 2012, 14:31 Есть официальный манул от гугла для ютуба https://developers.google.com/youtube/reference?hl=ru Вот главный источник информации! Принцип действия getAuthToken() следующий: Поскольку мы имеем следующую структуру ответа: Цитировать SID=DQAAALQAAAA6wx7byZp-s4BizDqS1OaT21j9dmY6wMjexpQdNC3 LSID=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_0vh-4XbUedCN9XTZ Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU то я просто в QString нахожу индексы "Auth=" и "\n" , а потом вырезаю нужный участок строки. И готово! Реализацию скину вечером, если надо..... Даже на русском языке! Спасибо большое! И за реализацию буду примного благодарен, всегда полезно посмотреть как надо правильно кодить) Название: Re: QNetworkAccessManager Авторизация youtube.com Отправлено: Ubuntu_linux от Июнь 07, 2012, 18:20 Есть официальный манул от гугла для ютуба https://developers.google.com/youtube/reference?hl=ru Вот главный источник информации! Принцип действия getAuthToken() следующий: Поскольку мы имеем следующую структуру ответа: Цитировать SID=DQAAALQAAAA6wx7byZp-s4BizDqS1OaT21j9dmY6wMjexpQdNC3 LSID=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_0vh-4XbUedCN9XTZ Auth=DQAAALUAAAARH_PvRXoaz23Dv_UmOSUz2_jxJVCGjoulKlhWbU то я просто в QString нахожу индексы "Auth=" и "\n" , а потом вырезаю нужный участок строки. И готово! Реализацию скину вечером, если надо..... Даже на русском языке! Спасибо большое! И за реализацию буду примного благодарен, всегда полезно посмотреть как надо правильно кодить) Код
|