class QOAuthHttpServerReplyHandler

Handles loopback redirects by setting up a local HTTP server. More

Inheritance diagram of PySide6.QtNetworkAuth.QOAuthHttpServerReplyHandler

Synopsis

Methods

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

Detailed Description

Warning

This section contains snippets that were automatically translated from C++ to Python and may contain errors.

This class serves as a reply handler for OAuth 2.0 authorization processes that use loopback redirection .

The redirect URI is where the authorization server redirects the user-agent (typically, and preferably, the system browser) once the authorization part of the flow is complete. Loopback redirect URIs use http as the scheme and either localhost or an IP address literal as the host (see IPv4 and IPv6 ).

QOAuthHttpServerReplyHandler sets up a localhost server. Once the authorization server redirects the browser to this localhost address, the reply handler parses the redirection URI query parameters, and then signals authorization completion with a signal .

To handle other redirect URI schemes, see QOAuthUriSchemeReplyHandler.

The following code illustrates the usage. First, the needed variables:

m_oauth = QOAuth2AuthorizationCodeFlow()
m_handler = None

Followed up by the OAuth setup (error handling omitted for brevity):

m_oauth.setAuthorizationUrl(QUrl("https://some.authorization.service/v3/authorize"))
m_oauth.setAccessTokenUrl(QUrl("https://some.authorization.service/v3/access_token"))
m_oauth.setClientIdentifier("a_client_id")
m_oauth.setScope("read")
m_handler = QOAuthHttpServerReplyHandler(1234, self)
m_oauth.authorizeWithBrowser.connect(self.openUrl)
m_oauth.granted.connect(this, [this]() {
    # Here we use QNetworkRequestFactory to store the access token
    m_api.setBearerToken(m_oauth.token().toLatin1())
    m_handler.close()
})

Finally, we then set up the URI scheme reply-handler:

m_oauth.setReplyHandler(m_handler)
# Initiate the authorization
if m_handler.isListening():
    m_oauth.grant()

IPv4 and IPv6

Currently if the handler is a loopback address, IPv4 any address, or IPv6 any address, the used callback is in the form of http://localhost:{port}/{path}. Otherwise, for specific IP addresses, the actual IP literal is used. For instance http://192.168.0.2:{port}/{path} in the case of IPv4.

__init__([parent=None])
Parameters:

parentQObject

Constructs a QOAuthHttpServerReplyHandler object using parent as a parent object. Calls listen() with port 0 and address Null.

See also

listen()

__init__(port[, parent=None])
Parameters:

Constructs a QOAuthHttpServerReplyHandler object using parent as a parent object. Calls listen() with port and address Null.

See also

listen()

__init__(address, port[, parent=None])
Parameters:

Constructs a QOAuthHttpServerReplyHandler object using parent as a parent object. Calls listen() with address and port.

See also

listen()

callbackPath()
Return type:

str

Returns the path that is used as the path component of the callback() / OAuth2 redirect_uri parameter .

callbackText()
Return type:

str

Returns the text that is used in response to the redirection at the end of the authorization stage.

The text is wrapped in a simple HTML page, and displayed to the user by the browser / user-agent which did the redirection.

The default text is

Callback received. Feel free to close this page.
close()

Tells this handler to stop listening for connections / redirections.

See also

listen()

isListening()
Return type:

bool

Returns true if this handler is currently listening, and false otherwise.

See also

listen() close()

listen([address=QHostAddress.Any[, port=0]])
Parameters:
Return type:

bool

Tells this handler to listen for incoming connections / redirections on address and port. Returns true if listening is successful, and false otherwise.

Active listening is only required when performing the initial authorization phase, typically initiated by a grant() call.

It is recommended to close the listener after successful authorization. Listening is not needed for requesting access tokens or refreshing them.

If this function is called with Null as the address, the handler will attempt to listen to LocalHost, and if that fails, LocalHostIPv6.

See also IPv4 and IPv6 .

port()
Return type:

int

Returns the port on which this handler is listening, otherwise returns 0.

setCallbackPath(path)
Parameters:

path – str

Sets path to be used as the path component of the callback() .

See also

callbackPath()

setCallbackText(text)
Parameters:

text – str

Sets text to be used in response to the redirection at the end of the authorization stage.

See also

callbackText()