I am using networkauth for connecting to an OAuth application. I have been able to successfully authenticate after I receive the QOAuth2AuthorizationCodeFlow::granted signal.
Had it been a normal QNAM request, it would have been easy. But with networkauth, I don't have access to AccessToken. So I cannot directly send a QNAM request
Now, what is the correct way to send an additional header with my request? Here is my code
// 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();
});
});
AccessToken
can be obtained by this->myObject->token()
and the header can be set using:
m_networkRequest.setRawHeader("Authorization",
"Bearer " + this->myObject->token().toUtf8());
So my code snippet becomes:
// 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();
});
});