QOAuthHttpServerReplyHandler 类

通过设置本地 HTTP 服务器处理环回重定向。 更多...

头文件 #include <QOAuthHttpServerReplyHandler>
CMakefind_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmakeQT += networkauth
继承QOAuthOobReplyHandler

公共函数

QOAuthHttpServerReplyHandler(QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(quint16 port, QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent = nullptr)
virtual~QOAuthHttpServerReplyHandler()
QStringcallbackPath() const
QStringcallbackText() const
voidclose()
boolisListening() const
boollisten(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
quint16port() const
voidsetCallbackPath(const QString &path)
voidsetCallbackText(const QString &text)

详细描述

此类作为 OAuth 2.0 授权过程(使用环回重定向)的回复处理器。

重定向 URI 是授权服务器在授权流程的授权部分完成后将用户代理(通常是系统浏览器)重定向到的地址。环回重定向 URI 使用 http 作为方案,并使用 localhost 或 IP 地址字面量作为主机(参见 IPv4 和 IPv6)。

QOAuthHttpServerReplyHandler 设置本地主机服务器。一旦授权服务器将浏览器重定向到此本地地址,则回复处理器将解析重定向 URI 查询参数,然后使用一个 信号 通知授权完成。

要处理其他重定向 URI 方案,请参阅 QOAuthUriSchemeReplyHandler。

以下代码说明了用法。首先,需要的变量

QOAuth2AuthorizationCodeFlow m_oauth;
QOAuthHttpServerReplyHandler *m_handler = nullptr;

然后是 OAuth 设置(省略错误处理以节省空间)

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

最后,我们设置 URI 方案回复处理器

m_oauth.setReplyHandler(m_handler);

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

IPv4 和 IPv6

当前情况下,如果处理器是回环地址、IPv4任意地址或IPv6任意地址,所使用的回调以如下形式呈现http://localhost:{端口号}/{路径}。否则,对于特定IP地址,使用实际IP字面值。例如,在IPv4的情况下,是http://192.168.0.2:{端口号}/{路径}

成员函数文档

[显示] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(QObject *parent = nullptr)

使用parent作为父对象的构造一个QOAuthHttpServerReplyHandler对象。调用listen(),端口号为0,地址为Null

另请参见listen

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

使用parent作为父对象的构造一个QOAuthHttpServerReplyHandler对象。调用listen(),端口号为port,地址为Null

另请参见listen

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

使用parent作为父对象的构造一个QOAuthHttpServerReplyHandler对象。调用listen(),地址为address,端口号为port

另请参见listen

[虚拟 noexcept] QOAuthHttpServerReplyHandler::~QOAuthHttpServerReplyHandler()

销毁QOAuthHttpServerReplyHandler对象。停止监听连接/重定向。

另请参见close

QString QOAuthHttpServerReplyHandler::callbackPath() const

返回用作callback()/OAuth2 redirect_uri参数路径部分的路径。

另请参见setCallbackPath

QString QOAuthHttpServerReplyHandler::callbackText() const

返回在授权阶段结束时响应的重定向文本。

文本被包装在一个简单的HTML页面中,并由执行重定向的浏览器/用户代理显示给用户。

默认文本是

Callback received. Feel free to close this page.

另请参见setCallbackText

void QOAuthHttpServerReplyHandler::close()

告诉本处理器停止监听连接/重定向。

另请参见listen

bool QOAuthHttpServerReplyHandler::isListening() const

如果本处理器目前正在监听则返回true,否则返回false

另请参阅 listen() 和 close().

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

告诉此处理器在 addressport 上监听传入的连接/重定向。如果监听成功,则返回 true,否则返回 false

只有在执行初始授权阶段时需要激活监听,通常通过 QOAuth2AuthorizationCodeFlow::grant() 调用发起。

建议在授权成功后关闭监听器。请求访问令牌或刷新它们时不需要监听。

如果此函数的 address 参数传入了 Null,处理器将尝试监听 LocalHost,失败后尝试 LocalHostIPv6

另请参阅 IPv4 和 IPv6

另请参阅 close(),isListening() 和 QTcpServer::listen().

quint16 QOAuthHttpServerReplyHandler::port() const

返回此处理器正在监听的端口号,否则返回 0。

另请参阅 listen() 和 isListening().

void QOAuthHttpServerReplyHandler::setCallbackPath(const QString &path)

设置 path 作为 callback 的路径部分。

另请参阅 callbackPath().

void QOAuthHttpServerReplyHandler::setCallbackText(const QString &text)

设置用于授权阶段结束时的重定向响应的 text

另请参阅 callbackText().

© 2024 The Qt Company Ltd. 本文档中的文档贡献享有其各自所有者的版权。本文档提供的内容是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权的。Qt 和 respective logos 是 The Qt Company Ltd. 在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。