Sur cette page

Méthodes HTTP alternatives à OAuth2

QtNetworkAuth fournit des méthodes HTTP telles que QAbstractOAuth::get() pour émettre des requêtes authentifiées. Dans le cas d'OAuth2, cela signifie généralement qu'il faut définir l'en-tête Authorization, comme spécifié dans la RFC 6750.

Cette opération étant simple à réaliser, il est préférable d'utiliser directement les API normales de la méthode HTTP QtNetwork et de définir cet en-tête manuellement. Ces API QtNetwork ont moins d'hypothèses sur les types de contenu des messages et fournissent un ensemble plus large d'API.

Voir QRestAccessManager, QNetworkAccessManager, QNetworkRequest, QNetworkRequestFactory.

QNetworkRequest

L'en-tête Authorization nécessaire peut être défini directement sur chaque demande nécessitant une autorisation.

using namespace Qt::StringLiterals;

QOAuth2AuthorizationCodeFlow m_oauth;
QNetworkRequest request;

QHttpHeaders headers;
headers.append(QHttpHeaders::WellKnownHeader::Authorization, u"Bearer "_s + m_oauth.token());
request.setHeaders(headers);

Après avoir défini l'en-tête, utilisez la requête normalement avec QRestAccessManager ou QNetworkAccessManager.

QNetworkRequestFactory

QNetworkRequestFactory est une classe de commodité introduite dans Qt 6.7. Elle fournit une méthode adaptée à cette tâche : QNetworkRequestFactory::setBearerToken(), comme l'illustre le code ci-dessous.

QNetworkRequestFactory m_api({"https://www.example.com/v3"});
QOAuth2AuthorizationCodeFlow m_oauth;
// ...
connect(&m_oauth, &QOAuth2AuthorizationCodeFlow::granted, this, [this]{
    m_api.setBearerToken(m_oauth.token().toLatin1());
});

Après avoir défini le jeton porteur, utilisez la fabrique de requêtes normalement avec QRestAccessManager ou QNetworkAccessManager.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.