En esta página

QOAuthUriSchemeReplyHandler Class

Maneja redirecciones de esquemas URI privados/personalizados y https. Más...

Cabecera: #include <QOAuthUriSchemeReplyHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
Desde: Qt 6.8
Hereda de: QOAuthOobReplyHandler

Propiedades

Funciones públicas

QOAuthUriSchemeReplyHandler()
QOAuthUriSchemeReplyHandler(QObject *parent)
QOAuthUriSchemeReplyHandler(const QUrl &redirectUrl, QObject *parent = nullptr)
virtual ~QOAuthUriSchemeReplyHandler() override
void close()
(since 6.9) bool handleAuthorizationRedirect(const QUrl &url)
bool isListening() const
bool listen()
QUrl redirectUrl() const
void setRedirectUrl(const QUrl &url)

Señales

Descripción detallada

Esta clase sirve como gestor de respuesta para los procesos de autorización OAuth 2.0 que utilizan esquemas URI privados/personalizados o HTTPS para la redirección. Gestiona la recepción de la redirección de autorización (también conocida como callback) y la posterior adquisición de tokens de acceso.

El URI de redirección es donde el servidor de autorización redirige al usuario-agente (típicamente, y preferiblemente, el navegador del sistema) una vez que la parte de autorización del flujo se ha completado.

El uso de esquemas URI específicos requiere una configuración a nivel de sistema operativo para asociar el URI con la aplicación correcta. La forma de configurar esta asociación varía entre sistemas operativos. Véase Platform Support and Dependencies.

Esta clase complementa a QOAuthHttpServerReplyHandler, que gestiona los esquemas http configurando un servidor localhost.

El siguiente código ilustra el uso. Primero, las variables necesarias:

QOAuth2AuthorizationCodeFlow m_oauth;
QOAuthUriSchemeReplyHandler m_handler;

Seguido por la configuración de OAuth (se omite el manejo de errores por brevedad):

m_oauth.setAuthorizationUrl(QUrl(authorizationUrl));
m_oauth.setTokenUrl(QUrl(accessTokenUrl));
m_oauth.setClientIdentifier(clientIdentifier);
m_oauth.setRequestedScopeTokens({scope});

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();
});

Finalmente, configuramos el manejador de respuesta del esquema URI:

m_handler.setRedirectUrl(QUrl{"com.example.myqtapp://oauth2redirect"_L1});
m_oauth.setReplyHandler(&m_handler);

// Initiate the authorization
if (m_handler.listen()) {
    m_oauth.grant();
}

Esquemas URI privados/personalizados

Los esquemas URI personalizados suelen utilizar la notación de dominio inverso seguida de una ruta, u ocasionalmente un host/host+ruta:

// Example with path:
com.example.myapp:/oauth2/callback
// Example with host:
com.example.myapp://oauth2.callback

Esquema URI HTTPS

Con los esquemas URI HTTPS, las URL de redirección son enlaces https normales:

https://myapp.example.com/oauth2/callback

Estos enlaces se denominan Universal Links en iOS y App Links en Android.

Se recomienda el uso de esquemas https, ya que proporcionan seguridad adicional al obligar a los desarrolladores de aplicaciones a demostrar la propiedad de las URL utilizadas. Esta prueba se realiza alojando un archivo de asociación, que el sistema operativo consultará como parte de su envío interno de URL.

El contenido de este archivo asocia la aplicación y las URL utilizadas. Los archivos de asociación deben ser accesibles al público sin redireccionamientos HTTP. Además, el sitio de alojamiento debe disponer de certificados válidos y, al menos con Android, el archivo debe servirse como application/json content-type (consulte la guía de configuración de su servidor).

Además, los enlaces https pueden proporcionar algunas ventajas de usabilidad:

  • La URL https funciona como un enlace https normal. Si el usuario no ha instalado la aplicación (ya que la URL no ha sido gestionada por ninguna aplicación), el enlace https puede servir, por ejemplo, de instrucciones para hacerlo.
  • El diálogo de selección de aplicación para abrir la URL puede evitarse, y en su lugar su aplicación puede abrirse automáticamente.

La contrapartida es que esto requiere una configuración adicional, ya que es necesario configurar este archivo de asociación alojado públicamente.

Plataformas compatibles y dependencias

Las plataformas soportadas actualmente son Android, iOS y macOS.

La escucha del esquema URI se basa en QDesktopServices::setUrlHandler() y QDesktopServices::unsetUrlHandler(). Estos son actualmente proporcionados por el módulo Qt::Gui y por lo tanto el módulo QtNetworkAuth depende de Qt::Gui. Si QtNetworkAuth se construye sin Qt::Gui, QOAuthUriSchemeReplyHandler no se incluirá.

Android

En Android los esquemas URI requieren:

  • Configurar intent-filters en el manifiesto de la aplicación
  • Opcionalmente, para la verificación automática con esquemas https, alojar un archivo de asociación de sitios assetlinks.json

Ver también la Configuración del archivo de manifiesto de Qt Android.

iOS y macOS

En iOS y macOS los esquemas URI requieren:

Windows, Linux

Actualmente no es compatible. Sin embargo las plataformas y casos de uso que soportan Qt WebEngine pueden seguir utilizando este gestor de respuestas; para obtener más información, consulte Soporte de Qt OAuth2 para navegadores.

Documentación de propiedades

redirectUrl : QUrl

Esta propiedad contiene la URL utilizada para recibir la redirección/respuesta de autorización.

Esta propiedad se utiliza como el parámetro redirect_uri de OAuth2, que se envía como parte de la solicitud de autorización. La redirect_uri se adquiere llamando a QUrl::toString() con las opciones predeterminadas.

La URL debe coincidir con la registrada en el servidor de autorización, ya que es probable que los servidores de autorización rechacen cualquier redirect_uri que no coincida.

Del mismo modo, cuando este gestor recibe la redirección, la URL de redirección debe coincidir con la URL establecida aquí. El gestor compara el esquema, el host, el puerto, la ruta y cualquier elemento de consulta que forme parte de la URL establecida por este método.

La URL se gestiona sólo si todos estos elementos coinciden. La comparación de los parámetros de consulta excluye cualquier parámetro de consulta adicional que pueda haberse establecido en el lado del servidor, ya que éstos contienen los datos reales de interés.

Funciones de acceso:

QUrl redirectUrl() const
void setRedirectUrl(const QUrl &url)

Señal del notificador:

void redirectUrlChanged()

Documentación de las funciones miembro

QOAuthUriSchemeReplyHandler::QOAuthUriSchemeReplyHandler()

Construye un objeto QOAuthUriSchemeReplyHandler con callback()/ redirectUrl() vacío y sin padre. El objeto construido no escucha automáticamente.

[explicit] QOAuthUriSchemeReplyHandler::QOAuthUriSchemeReplyHandler(QObject *parent)

Construye un objeto QOAuthUriSchemeReplyHandler con parent y callback()/redirectUrl() vacíos. El objeto construido no escucha automáticamente.

[explicit] QOAuthUriSchemeReplyHandler::QOAuthUriSchemeReplyHandler(const QUrl &redirectUrl, QObject *parent = nullptr)

Construye un objeto QOAuthUriSchemeReplyHandler y establece parent como el objeto padre y redirectUrl como la URL de redirección. El objeto construido intenta escuchar automáticamente.

Ver también redirectUrl(), setRedirectUrl(), listen(), y isListening().

[override virtual noexcept] QOAuthUriSchemeReplyHandler::~QOAuthUriSchemeReplyHandler()

Destruye el objeto QOAuthUriSchemeReplyHandler. Cierra este manejador.

Véase también close().

void QOAuthUriSchemeReplyHandler::close()

Indica a este gestor que deje de escuchar URLs entrantes.

Véase también listen() y isListening().

[since 6.9] bool QOAuthUriSchemeReplyHandler::handleAuthorizationRedirect(const QUrl &url)

Esta función se utiliza para suministrar la URL de redirección que el Servidor de Autorización proporciona al final de la etapa de autorización. La dirección url se somete a la misma comprobación de URL que se describe en redirectUrl.

Proporcionar la URL puede ser útil para situaciones en las que esta URL de redirección se captura por otros medios, por ejemplo con Qt WebEngine o a través de alguna otra disposición personalizada. De esta forma, el uso de este agente puede integrarse con el resto del flujo OAuth2.

Este gestor no necesita estar a la escucha, por lo que se recomienda close() el gestor para evitar escuchas innecesarias.

Devuelve true si la URL coincidió y fue manejada, false en caso contrario.

Véase también Redirigir esquemas URI con Qt WebEngine.

Esta función se introdujo en Qt 6.9.

[noexcept] bool QOAuthUriSchemeReplyHandler::isListening() const

Devuelve true si este manejador está escuchando actualmente, y false en caso contrario.

Véase también listen() y close().

bool QOAuthUriSchemeReplyHandler::listen()

Indica a este gestor que escuche las URL entrantes. Devuelve true si la escucha tiene éxito, y false en caso contrario.

El manejador comparará las URLs con redirectUrl(). Si la URL recibida no coincide, será reenviada a QDesktopServices::openURL().

La escucha activa sólo es necesaria cuando se realiza la fase de autorización inicial, normalmente iniciada por una llamada a QOAuth2AuthorizationCodeFlow::grant().

Se recomienda cerrar la escucha después de una autorización exitosa. La escucha no es necesaria para acquiring access tokens.

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