QOAuth2AuthorizationCodeFlow Class

QOAuth2AuthorizationCodeFlow 类提供了授权码授予流程的实现。更多

Header: #include <QOAuth2AuthorizationCodeFlow>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
继承: QAbstractOAuth2

公共类型

(since 6.8) enum class PkceMethod { None, Plain, S256 }

公共函数

QOAuth2AuthorizationCodeFlow(QObject *parent = nullptr)
QOAuth2AuthorizationCodeFlow(QNetworkAccessManager *manager, QObject *parent = nullptr)
QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, QNetworkAccessManager *manager, QObject *parent = nullptr)
QOAuth2AuthorizationCodeFlow(const QUrl &authenticateUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr)
QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, const QUrl &authenticateUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr)
virtual ~QOAuth2AuthorizationCodeFlow()
(until 6.13) QUrl accessTokenUrl() const
(since 6.8) QOAuth2AuthorizationCodeFlow::PkceMethod pkceMethod() const
(until 6.13) void setAccessTokenUrl(const QUrl &accessTokenUrl)
(since 6.8) void setPkceMethod(QOAuth2AuthorizationCodeFlow::PkceMethod method, qsizetype length = 43)

公共槽

virtual void grant() override
(until 6.13) void refreshAccessToken()

受保护函数

QUrl buildAuthenticateUrl(const QMultiMap<QString, QVariant> &parameters = {})
void requestAccessToken(const QString &code)

重实现的受保护函数

virtual void resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> &parameters = {}) override

受保护插槽

(since 6.9) void refreshTokensImplementation()

详细说明

该类实现了授权代码授予流程,用于获取和刷新访问令牌。这是一个基于重定向的流程,因此用户需要访问网络浏览器。

作为基于重定向的流程,该类需要设置一个适当的回复处理程序。请参阅Qt XML OAuth2 概述QOAuthHttpServerReplyHandlerQOAuthUriSchemeReplyHandler

成员类型文档

[since 6.8] enum class QOAuth2AuthorizationCodeFlow::PkceMethod

可用的代码交换证明密钥 (PKCE) 方法列表。

PKCE 是一种安全措施,可降低授权码截获攻击的风险。因此,它适用于 OAuth2 "授权码 "流程(授予),尤其适用于本地应用程序。

PKCE 在授权和访问令牌请求中插入了附加参数。有了这些参数的帮助,授权服务器就能验证访问令牌请求是否来自发出授权请求的同一实体。

常量说明
QOAuth2AuthorizationCodeFlow::PkceMethod::None255不使用 PKCE。
QOAuth2AuthorizationCodeFlow::PkceMethod::Plain1使用普通 PKCE 方法。只有在无法使用 S256 时才使用。使用普通方法时,验证码挑战等于验证码
QOAuth2AuthorizationCodeFlow::PkceMethod::S2560使用 S256 PKCE 方法。这是默认方法,也是本地应用程序推荐使用的方法。使用 S256 方法时,代码挑战代码校验器的 SHA-256 的 base64url 编码值。

该枚举在 Qt 6.8 中引入。

另请参阅 setPkceMethod() 和pkceMethod()。

成员函数文档

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

使用父对象parent 构建 QOAuth2AuthorizationCodeFlow 对象。

[explicit] QOAuth2AuthorizationCodeFlow::QOAuth2AuthorizationCodeFlow(QNetworkAccessManager *manager, QObject *parent = nullptr)

使用parent 作为父对象构建 QOAuth2AuthorizationCodeFlow 对象,并将manager 设置为网络访问管理器。

QOAuth2AuthorizationCodeFlow::QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, QNetworkAccessManager *manager, QObject *parent = nullptr)

使用parent 作为父对象构建 QOAuth2AuthorizationCodeFlow 对象,并将manager 设置为网络访问管理器。客户端标识符设置为clientIdentifier

QOAuth2AuthorizationCodeFlow::QOAuth2AuthorizationCodeFlow(const QUrl &authenticateUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr)

使用parent 作为父对象构建 QOAuth2AuthorizationCodeFlow 对象,并将manager 设置为网络访问管理器。验证 URL 设置为authenticateUrl ,访问令牌 URL 设置为accessTokenUrl

QOAuth2AuthorizationCodeFlow::QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, const QUrl &authenticateUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr)

使用parent 作为父对象构建 QOAuth2AuthorizationCodeFlow 对象,并将manager 设置为网络访问管理器。客户端标识符设置为clientIdentifier ,验证 URL 设置为authenticateUrl ,访问令牌 URL 设置为accessTokenUrl

[virtual noexcept] QOAuth2AuthorizationCodeFlow::~QOAuth2AuthorizationCodeFlow()

销毁QOAuth2AuthorizationCodeFlow 实例。

[until 6.13] QUrl QOAuth2AuthorizationCodeFlow::accessTokenUrl() const

该函数计划在 6.13 版中废弃。

请使用QAbstractOAuth2::tokenUrl() 代替。

返回用于请求访问令牌的 URL。

另请参阅 setAccessTokenUrl()。

[protected] QUrl QOAuth2AuthorizationCodeFlow::buildAuthenticateUrl(const QMultiMap<QString, QVariant> &parameters = {})

使用parameters 生成将在授权请求中使用的身份验证 URL。

[override virtual slot] void QOAuth2AuthorizationCodeFlow::grant()

重新实现:QAbstractOAuth::grant().

启动OAuth 2.0 授权框架中所述的身份验证流程

[noexcept, since 6.8] QOAuth2AuthorizationCodeFlow::PkceMethod QOAuth2AuthorizationCodeFlow::pkceMethod() const

返回当前的 PKCE 方法。

此函数在 Qt 6.8 中引入。

另请参阅 setPkceMethod() 和QOAuth2AuthorizationCodeFlow::PkceMethod

[slot, until 6.13] void QOAuth2AuthorizationCodeFlow::refreshAccessToken()

该函数计划在 6.13 版中废弃。

请使用QAbstractOAuth2::refreshTokens() 代替。

调用此函数刷新令牌。

此函数调用refreshTokensImplementation()。

[protected slot, since 6.9] void QOAuth2AuthorizationCodeFlow::refreshTokensImplementation()

该函数发送令牌刷新请求。

如果刷新请求成功发起,则状态被设置为QAbstractOAuth::Status::RefreshingToken ;否则将发出requestFailed() 信号,状态不会改变。

如果令牌刷新过程已在进行中,则此函数不起作用。

如果刷新令牌失败且存在访问令牌,则状态设置为QAbstractOAuth::Status::Granted ;如果不存在访问令牌,则状态设置为QAbstractOAuth::Status::NotAuthenticated

此函数在 Qt 6.9 中引入。

另请参阅 QAbstractOAuth::requestFailed() 和QAbstractOAuth2::refreshTokens()。

[protected] void QOAuth2AuthorizationCodeFlow::requestAccessToken(const QString &code)

从接收到的code 中请求访问令牌。当用户在浏览器中成功完成身份验证后,code

[override virtual protected] void QOAuth2AuthorizationCodeFlow::resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> &parameters = {})

重实现:QAbstractOAuth::resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> &parameters)。

使用urlparameters 创建验证 URL。该函数发出authorizeWithBrowser() 信号,要求用户交互。

[until 6.13] void QOAuth2AuthorizationCodeFlow::setAccessTokenUrl(const QUrl &accessTokenUrl)

该函数计划在 6.13 版中废弃。

请使用QAbstractOAuth2::setTokenUrl() 代替。

将用于请求访问令牌的 URL 设置为accessTokenUrl

另请参阅 accessTokenUrl()。

[since 6.8] void QOAuth2AuthorizationCodeFlow::setPkceMethod(QOAuth2AuthorizationCodeFlow::PkceMethod method, qsizetype length = 43)

将当前 PKCE 方法设置为method

可选择使用length 参数设置code_verifier 的长度。该值必须在 43 到 128 字节之间。代码校验器 "本身由库随机生成。

该功能在 Qt 6.8 中引入。

另请参见 pkceMethod() 和QOAuth2AuthorizationCodeFlow::PkceMethod

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