QOAuthHttpServerReplyHandler Class

Erledigt Loopback-Umleitungen, indem er einen lokalen HTTP-Server einrichtet. Mehr...

Kopfzeile: #include <QOAuthHttpServerReplyHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
Erbt: QOAuthOobReplyHandler

Öffentliche Funktionen

QOAuthHttpServerReplyHandler(QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(quint16 port, QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent = nullptr)
virtual ~QOAuthHttpServerReplyHandler()
QString callbackPath() const
QString callbackText() const
void close()
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
quint16 port() const
void setCallbackPath(const QString &path)
void setCallbackText(const QString &text)

Detaillierte Beschreibung

Diese Klasse dient als Antwort-Handler für OAuth 2.0-Autorisierungsprozesse, die eine Loopback-Umleitung verwenden.

Der Redirect-URI ist der Ort, an den der Autorisierungsserver den User-Agent (typischerweise und vorzugsweise den Systembrowser) umleitet, sobald der Autorisierungsteil des Ablaufs abgeschlossen ist. Loopback-Redirect-URIs verwenden http als Schema und entweder localhost oder ein IP-Adressliteral als Host (siehe IPv4 and IPv6).

QOAuthHttpServerReplyHandler richtet einen localhost-Server ein. Sobald der Autorisierungsserver den Browser zu dieser localhost-Adresse umleitet, parst der Reply-Handler die URI-Abfrageparameter der Umleitung und signalisiert dann den Abschluss der Autorisierung mit a signal.

Für die Behandlung anderer Umleitungs-URI-Schemata siehe QOAuthUriSchemeReplyHandler.

Der folgende Code veranschaulicht die Verwendung. Zuerst die benötigten Variablen:

QOAuth2AuthorizationCodeFlow m_oauth;
QOAuthHttpServerReplyHandler *m_handler = nullptr;

Gefolgt von der OAuth-Einrichtung (Fehlerbehandlung der Kürze halber weggelassen):

m_oauth.setAuthorizationUrl(QUrl("https://some.authorization.service/v3/authorize"_L1));
m_oauth.setAccessTokenUrl(QUrl("https://some.authorization.service/v3/access_token"_L1));
m_oauth.setClientIdentifier("a_client_id"_L1);
m_oauth.setScope("read"_L1);

m_handler = new QOAuthHttpServerReplyHandler(1234, this);

connect(&m_oauth, &QAbstractOAuth::authorizeWithBrowser, this, &QDesktopServices::openUrl);
connect(&m_oauth, &QAbstractOAuth::granted, this, [this]() {
    // Here we use QNetworkRequestFactory to store the access token
    m_api.setBearerToken(m_oauth.token().toLatin1());
    m_handler->close();
});

Schließlich richten wir den Reply-Handler für das URI-Schema ein:

m_oauth.setReplyHandler(m_handler);

// Initiate the authorization
if (m_handler->isListening()) {
    m_oauth.grant();
}

IPv4 und IPv6

Wenn der Handler ein Handler für beliebige Adressen ist (AnyIPv4, AnyIPv6, or Any), hat der verwendete Callback die Form http://localhost:{port}/{path}. Der Handler wird zuerst versuchen, auf die IPv4 Loopback-Adresse zu hören und dann auf die IPv6-Adresse. localhost wird verwendet, weil es sowohl auf IPv4- als auch auf IPv6-Schnittstellen korrekt aufgelöst wird.

Für Loopback-Adressen (LocalHost or LocalHostIPv6) werden die IP-Literale (127.0.0.1 und ::1) verwendet.

Für spezifische IP-Adressen wird das angegebene IP-Literal direkt verwendet, zum Beispiel: http://192.168.0.123:{port}/{path} im Falle einer IPv4-Adresse.

Dokumentation der Mitgliedsfunktionen

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(QObject *parent = nullptr)

Konstruiert ein QOAuthHttpServerReplyHandler-Objekt mit parent als übergeordnetes Objekt. Ruft listen() mit Port 0 und Adresse LocalHost auf.

Siehe auch listen().

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(quint16 port, QObject *parent = nullptr)

Konstruiert ein QOAuthHttpServerReplyHandler-Objekt mit parent als übergeordnetes Objekt. Ruft listen() mit port und der Adresse LocalHost auf.

Siehe auch listen().

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent = nullptr)

Konstruiert ein QOAuthHttpServerReplyHandler-Objekt mit parent als übergeordnetes Objekt. Ruft listen() mit address und port auf.

Siehe auch listen().

[virtual noexcept] QOAuthHttpServerReplyHandler::~QOAuthHttpServerReplyHandler()

Zerstört das Objekt QOAuthHttpServerReplyHandler. Hört auf, auf Verbindungen / Umleitungen zu warten.

Siehe auch close().

QString QOAuthHttpServerReplyHandler::callbackPath() const

Gibt den Pfad zurück, der als Pfadkomponente des callback() / OAuth2 redirect_uri Parameters verwendet wird.

Siehe auch setCallbackPath().

QString QOAuthHttpServerReplyHandler::callbackText() const

Gibt den Text zurück, der als Antwort auf die Umleitung am Ende der Autorisierungsphase verwendet wird.

Der Text ist in eine einfache HTML-Seite verpackt und wird dem Benutzer von dem Browser / User-Agent angezeigt, der die Umleitung vorgenommen hat.

Der Standardtext lautet

Callback received. Feel free to close this page.

Siehe auch setCallbackText().

void QOAuthHttpServerReplyHandler::close()

Sagt diesem Handler, dass er aufhören soll, auf Verbindungen/Umleitungen zu warten.

Siehe auch listen().

bool QOAuthHttpServerReplyHandler::isListening() const

Gibt true zurück, wenn dieser Handler gerade lauscht, und andernfalls false.

Siehe auch listen() und close().

bool QOAuthHttpServerReplyHandler::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

Weist diesen Handler an, auf address und port auf eingehende Verbindungen / Weiterleitungen zu warten. Gibt true zurück, wenn das Abhören erfolgreich ist, und andernfalls false.

Aktives Abhören ist nur während der anfänglichen Autorisierungsphase erforderlich, die normalerweise durch einen QOAuth2AuthorizationCodeFlow::grant()-Aufruf eingeleitet wird.

Es wird empfohlen, den Listener nach erfolgreicher Autorisierung zu schließen. Das Abhören ist nicht erforderlich für requesting access tokens oder deren Auffrischung.

Wenn diese Funktion mit Null als address aufgerufen wird, versucht der Handler, LocalHost abzuhören, und wenn dies fehlschlägt, LocalHostIPv6.

Siehe auch IPv4 and IPv6.

Siehe auch close(), isListening(), und QTcpServer::listen().

quint16 QOAuthHttpServerReplyHandler::port() const

Gibt den Port zurück, an dem dieser Handler lauscht, andernfalls wird 0 zurückgegeben.

Siehe auch listen() und isListening().

void QOAuthHttpServerReplyHandler::setCallbackPath(const QString &path)

Legt fest, dass path als Pfadkomponente von callback() verwendet werden soll.

Siehe auch callbackPath().

void QOAuthHttpServerReplyHandler::setCallbackText(const QString &text)

Legt fest, dass text als Antwort auf die Umleitung am Ende der Genehmigungsphase verwendet werden soll.

Siehe auch callbackText().

© 2025 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.