本页内容

QOAuth2AuthorizationCodeFlow Class

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

头文件: #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()

详细说明

该类实现了授权码授予流程,该流程既用于获取访问令牌,也用于刷新访问令牌。由于这是基于重定向的流程,因此用户需要使用网页浏览器。

作为基于重定向的流程,本类要求设置正确的响应处理程序。请参阅《OAuth 2.0 概述》、QOAuthHttpServerReplyHandler 以及QOAuthUriSchemeReplyHandler 。

成员类型文档

[since 6.8] enum class QOAuth2AuthorizationCodeFlow::PkceMethod

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

PKCE 是一项用于降低授权码截获攻击风险的安全措施。因此,它适用于 OAuth2“授权码”流程(授权模式),特别是针对原生应用程序。

PKCE 会在授权令牌和访问令牌请求中插入额外参数。借助这些参数,授权服务器能够验证访问令牌请求是否确实来自发出授权请求的同一实体。

常量值描述
QOAuth2AuthorizationCodeFlow::PkceMethod::None255不使用 PKCE。这将导致该流程无法抵御授权码拦截攻击。仅当授权服务器不支持 PKCE 时才应使用此选项。
QOAuth2AuthorizationCodeFlow::PkceMethod::Plain1使用“Plain” PKCE 方法。仅当无法使用 S256 时才使用此选项。在“Plain”方法中,代码挑战值等于代码验证码,这会导致任何能够拦截授权请求的人都能获取该验证码。
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,该 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)。

使用url 和parameters 构建一个身份验证 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字节之间。'code verifier'本身由库随机生成。

将method 设置为PkceMethod::None 或PkceMethod::Plain 会削弱对授权码截获的防护能力。

该函数在 Qt 6.8 中引入。

另请参阅 pkceMethod() 和QOAuth2AuthorizationCodeFlow::PkceMethod 。

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