QOAuthHttpServerReplyHandler 类
通过设置本地 HTTP 服务器处理环回重定向。 更多...
头文件 | #include <QOAuthHttpServerReplyHandler> |
CMake | find_package(Qt6 REQUIRED COMPONENTS NetworkAuth) target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth) |
qmake | QT += networkauth |
继承 | QOAuthOobReplyHandler |
公共函数
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) |
详细描述
此类作为 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
返回用作
另请参见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
。
bool QOAuthHttpServerReplyHandler::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
告诉此处理器在 address 和 port 上监听传入的连接/重定向。如果监听成功,则返回 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. 在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。