Qt5: отправить заголовки в запросе QOAuth2AuthorizationCodeFlow - PullRequest
0 голосов
/ 21 июня 2020

Я использую networkauth для подключения к приложению OAuth. Я смог успешно пройти аутентификацию после получения сигнала QOAuth2AuthorizationCodeFlow :: grant .

Если бы это был обычный запрос QNAM, это было бы легко. Но с networkauth у меня нет доступа к AccessToken. Поэтому я не могу напрямую отправить запрос QNAM

Теперь, как правильно отправить дополнительный заголовок с моим запросом? Вот мой код

// private 
// QOAuth2AuthorizationCodeFlow * myObject

connect(this->myObject, &QOAuth2AuthorizationCodeFlow::granted, [=](){
        qDebug() << __FUNCTION__ << __LINE__ << "Access Granted!";

        auto m_networkReply = this->myObject->post(QUrl("API_URL"));
// Here I need to post a header in m_networkReply
// setHeader(QNetworkRequest::ContentTypeHeader,"application/json")
// How do I do it?

        connect(m_networkReply, &QNetworkReply::finished, [=](){
            qDebug() << "REQUEST FINISHED. Error? " << (m_networkReply->error() != QNetworkReply::NoError);
            qDebug() << m_networkReply->readAll();
        });
    });

Спасибо

1 Ответ

0 голосов
/ 21 июня 2020

Я нашел решение своего вопроса. AccessToken можно получить с помощью this-> myObject-> token () , а заголовок можно установить с помощью

m_networkRequest.setRawHeader («Авторизация», «Bearer» + this- > myObject-> token (). toUtf8 ());

Таким образом, мой фрагмент кода становится

// private 
// QOAuth2AuthorizationCodeFlow * myObject

connect(this->myObject, &QOAuth2AuthorizationCodeFlow::granted, [=](){
        qDebug() << __FUNCTION__ << __LINE__ << "Access Granted!";

        QJsonObject obj;
        obj.insert("param1", "someval");

        QJsonDocument doc(obj);
        QString strJson(doc.toJson(QJsonDocument::Compact));

        QNetworkRequest m_networkRequest;
        m_networkRequest.setUrl(QUrl("API_URL"));

        m_networkRequest.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
        m_networkRequest.setRawHeader("Authorization", "Bearer " + this->myObject->token().toUtf8());

        auto m_networkReply = m_networkAccessManager->post(m_networkRequest, strJson.toUtf8());

        connect(m_networkReply, &QNetworkReply::finished, [=](){
            qDebug() << "REQUEST FINISHED. Error? " << (m_networkReply->error() != QNetworkReply::NoError);
            qDebug() << m_networkReply->readAll();
        });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...