QAbstractOAuth Class
QAbstractOAuth 类是所有 OAuth 身份验证方法实现的基类。更多内容...
| 头文件: | #include <QAbstractOAuth> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS NetworkAuth) target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth) |
| qmake: | QT += networkauth |
| 继承自: | QObject |
| 继承自: |
公共类型
| enum class | ContentType { WwwFormUrlEncoded, Json } |
| enum class | Error { NoError, NetworkError, ServerError, OAuthTokenNotFoundError, OAuthTokenSecretNotFoundError, …, ExpiredError } |
| enum class | Stage { RequestingTemporaryCredentials, RequestingAuthorization, RequestingAccessToken, RefreshingAccessToken } |
| enum class | Status { NotAuthenticated, TemporaryCredentialsReceived, Granted, RefreshingToken } |
属性
|
|
公共函数
| virtual | ~QAbstractOAuth() |
| QUrl | authorizationUrl() const |
| QString | clientIdentifier() const |
| QAbstractOAuth::ContentType | contentType() const |
| virtual QNetworkReply * | deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0 |
| QVariantMap | extraTokens() const |
| virtual QNetworkReply * | get(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0 |
| virtual QNetworkReply * | head(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0 |
| QAbstractOAuth::ModifyParametersFunction | modifyParametersFunction() const |
| QNetworkAccessManager * | networkAccessManager() const |
| virtual QNetworkReply * | post(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0 |
| virtual void | prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray()) = 0 |
| virtual QNetworkReply * | put(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0 |
| QAbstractOAuthReplyHandler * | replyHandler() const |
| void | setAuthorizationUrl(const QUrl &url) |
| void | setClientIdentifier(const QString &clientIdentifier) |
| void | setContentType(QAbstractOAuth::ContentType contentType) |
| void | setModifyParametersFunction(const QAbstractOAuth::ModifyParametersFunction &modifyParametersFunction) |
| void | setNetworkAccessManager(QNetworkAccessManager *networkAccessManager) |
| void | setReplyHandler(QAbstractOAuthReplyHandler *handler) |
| void | setToken(const QString &token) |
| QAbstractOAuth::Status | status() const |
| QString | token() const |
公共槽位
| virtual void | grant() = 0 |
信号
| void | authorizationUrlChanged(const QUrl &url) |
| void | authorizeWithBrowser(const QUrl &url) |
| void | clientIdentifierChanged(const QString &clientIdentifier) |
| void | contentTypeChanged(QAbstractOAuth::ContentType contentType) |
| void | extraTokensChanged(const QVariantMap &tokens) |
| void | granted() |
| void | requestFailed(const QAbstractOAuth::Error error) |
| void | statusChanged(QAbstractOAuth::Status status) |
| void | tokenChanged(const QString &token) |
受保护函数
| QString | callback() const |
| virtual void | resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> ¶meters) |
| void | setStatus(QAbstractOAuth::Status status) |
静态受保护成员
| QByteArray | generateRandomString(quint8 length) |
成员类型文档
enum class QAbstractOAuth::ContentType
指定经过身份验证的调用中 POST 方法的 MIME 内容类型。
| 常量 | 值 | 描述 |
|---|---|---|
QAbstractOAuth::ContentType::WwwFormUrlEncoded | 0 | 使用 application/x-www-form-urlencoded 格式。 |
QAbstractOAuth::ContentType::Json | 1 | 使用 application/json 格式。 |
enum class QAbstractOAuth::Error
表示最新接收到的错误。
| 常量 | 值 | 描述 |
|---|---|---|
QAbstractOAuth::Error::NoError | 0 | 未发生错误。 |
QAbstractOAuth::Error::NetworkError | 1 | 无法连接到服务器。 |
QAbstractOAuth::Error::ServerError | 2 | 服务器以错误响应了该请求,或者未成功接收其响应(例如,由于状态不匹配)。 |
QAbstractOAuth::Error::OAuthTokenNotFoundError | 3 | 服务器对令牌请求的响应中未提供令牌标识符。 |
QAbstractOAuth::Error::OAuthTokenSecretNotFoundError | 4 | 服务器对令牌请求的响应中未提供令牌密钥。 |
QAbstractOAuth::Error::OAuthCallbackNotVerified | 5 | 授权服务器未验证请求中提供的回调 URI。这通常发生在提供的回调与客户端注册时提供的回调不匹配时。 |
QAbstractOAuth::Error::ClientError (since Qt 6.9) | 6 | 该错误归因于客户端应用程序(例如,缺少配置或在不允许的状态下尝试发送请求)。目前由QOAuth2DeviceAuthorizationFlow 使用。 |
QAbstractOAuth::Error::ExpiredError (since Qt 6.9) | 7 | 令牌已过期。目前由QOAuth2DeviceAuthorizationFlow 使用。 |
enum class QAbstractOAuth::Stage
标识一个身份验证阶段。该阶段会被传递给modifyParametersFunction ,以便其在身份验证过程中每次被调用时,都能对参数进行不同的修改。
| 常量 | 值 | 描述 |
|---|---|---|
QAbstractOAuth::Stage::RequestingTemporaryCredentials | 0 | 准备临时凭据请求。 |
QAbstractOAuth::Stage::RequestingAuthorization | 1 | 准备授权授予 URL。 |
QAbstractOAuth::Stage::RequestingAccessToken | 2 | 正在准备令牌请求。 |
QAbstractOAuth::Stage::RefreshingAccessToken | 3 | 正在准备访问令牌刷新。 |
enum class QAbstractOAuth::Status
表示当前的身份验证状态。
| 常量 | 值 | 描述 |
|---|---|---|
QAbstractOAuth::Status::NotAuthenticated | 0 | 尚未检索到令牌。 |
QAbstractOAuth::Status::TemporaryCredentialsReceived | 1 | 已收到临时凭据,此状态用于某些 OAuth 身份验证方法。 |
QAbstractOAuth::Status::Granted | 2 | 已收到令牌凭据,允许进行经过身份验证的调用。 |
QAbstractOAuth::Status::RefreshingToken | 3 | 已请求新的令牌凭据。 |
属性文档
authorizationUrl : QUrl
该属性保存用于请求“资源所有者授权”的 URL,具体说明请参见:《OAuth 1.0 协议:资源所有者授权》
访问功能:
| QUrl | authorizationUrl() const |
| void | setAuthorizationUrl(const QUrl &url) |
通知信号:
| void | authorizationUrlChanged(const QUrl &url) |
clientIdentifier : QString
该属性保存身份验证过程中使用的客户端标识符。
访问函数:
| QString | clientIdentifier() const |
| void | setClientIdentifier(const QString &clientIdentifier) |
通知器信号:
| void | clientIdentifierChanged(const QString &clientIdentifier) |
另请参阅 setClientIdentifier()。
contentType : QAbstractOAuth::ContentType
该属性用于指定发送授权参数时使用的 Content-Type。
此属性控制在通过 POST 请求发送参数时的格式。同时还会添加一个相应的标头。
访问函数:
| QAbstractOAuth::ContentType | contentType() const |
| void | setContentType(QAbstractOAuth::ContentType contentType) |
通知器信号:
| void | contentTypeChanged(QAbstractOAuth::ContentType contentType) |
[read-only] extraTokens : QVariantMap
该属性用于存储从服务器接收到的额外令牌。
访问函数:
| QVariantMap | extraTokens() const |
通知信号:
| void | extraTokensChanged(const QVariantMap &tokens) |
[read-only] status : Status
该属性保存当前的身份验证状态。
访问函数:
| QAbstractOAuth::Status | status() const |
通知信号:
| void | statusChanged(QAbstractOAuth::Status status) |
token : QString
该属性存储用于对经过身份验证的请求进行签名的令牌。
访问函数:
通知器信号:
| void | tokenChanged(const QString &token) |
另请参阅 setToken()。
成员函数文档
[virtual noexcept] QAbstractOAuth::~QAbstractOAuth()
销毁抽象类 OAuth。
QUrl QAbstractOAuth::authorizationUrl() const
返回授权请求 URL。
注意: 这是 authorizationUrl 属性的获取 函数。
另请参阅 setAuthorizationUrl()。
[signal] void QAbstractOAuth::authorizeWithBrowser(const QUrl &url)
当由resourceOwnerAuthorization() 生成的url 已准备好在网页浏览器中使用,以便应用程序冒充用户时,会发出此信号。
另请参阅 resourceOwnerAuthorization()。
[protected] QString QAbstractOAuth::callback() const
返回与当前回复处理程序对应的当前回调字符串。该返回字符串即发送至服务器以指定回调 URI 的字符串,或在无头设备中用于标识替代方法的标识词。
另请参阅 replyHandler() 和setReplyHandler()。
QString QAbstractOAuth::clientIdentifier() const
返回身份验证过程中使用的当前客户端标识符。
注意: 这是 clientIdentifier 属性的获取器 函数。
另请参阅 setClientIdentifier()。
QAbstractOAuth::ContentType QAbstractOAuth::contentType() const
返回认证调用中当前使用的 Content-Type。
注意: 这是 contentType 属性的获取 函数。
另请参阅 setContentType() 和post()。
[pure virtual invokable] QNetworkReply *QAbstractOAuth::deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
发送一个经过身份验证的 DELETE 请求,并返回一个新的QNetworkReply 。url 和parameters 用于构建该请求。
注意: 可通过元对象系统以及从 QML 调用此 函数。参见Q_INVOKABLE 。
QVariantMap QAbstractOAuth::extraTokens() const
返回在身份验证过程中从服务器接收到的额外令牌。
注意: 这是 extraTokens 属性的获取器 函数。
另请参阅 extraTokensChanged()。
[static protected] QByteArray QAbstractOAuth::generateRandomString(quint8 length)
生成一个随机字符串,该字符串可作为状态或非ce使用。参数length 决定生成的字符串的长度。
另请参阅:《OAuth 1.0 协议:随机数和时间戳》。
注意:此函数是线程安全的。
[pure virtual invokable] QNetworkReply *QAbstractOAuth::get(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
发送一个经过身份验证的 GET 请求,并返回一个新的 `QNetworkReply` 对象。使用 `url ` 和 `parameters ` 来创建该请求。
注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
[pure virtual slot] void QAbstractOAuth::grant()
重写此函数以在子类中实现相应的身份验证流程。客户端代码会调用此函数来启动身份验证工作流。这可能需要用户交互:例如,通过网页浏览器请求用户的授权。当身份验证成功时,应发出granted();这表示凭据已准备就绪,可用于经过身份验证的调用。
[signal] void QAbstractOAuth::granted()
当授权流程成功完成时,会发出此信号。
[pure virtual invokable] QNetworkReply *QAbstractOAuth::head(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
发送一个经过身份验证的 HEAD 请求,并返回一个新的QNetworkReply 。url 和parameters 用于创建该请求。
注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
QAbstractOAuth::ModifyParametersFunction QAbstractOAuth::modifyParametersFunction() const
返回当前的参数修改函数。
另请参阅 setModifyParametersFunction() 和Stage 。
QNetworkAccessManager *QAbstractOAuth::networkAccessManager() const
返回当前用于在身份验证流程中向服务器发送请求或执行身份验证调用的网络访问管理器。
另请参阅 setNetworkAccessManager() 和QNetworkAccessManager 。
[pure virtual invokable] QNetworkReply *QAbstractOAuth::post(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
发送一个经过身份验证的POST请求,并返回一个新的QNetworkReply 。url 和parameters 用于创建该请求。
注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
[pure virtual] void QAbstractOAuth::prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray())
通过向给定的request 添加一个标头以及body (这是经过身份验证的请求所必需的),对其进行授权。
该verb 必须是有效的HTTP动词,且必须与用于发送request 的动词相同。
[pure virtual invokable] QNetworkReply *QAbstractOAuth::put(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
发送一个经过身份验证的 PUT 请求,并返回一个新的QNetworkReply 。url 和parameters 用于构建该请求。
注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
QAbstractOAuthReplyHandler *QAbstractOAuth::replyHandler() const
返回当前正在使用的响应处理程序。
另请参阅 setReplyHandler() 和QAbstractOAuthReplyHandler 。
[signal] void QAbstractOAuth::requestFailed(const QAbstractOAuth::Error error)
发出此信号以指示对服务器的请求失败。提供的error 参数说明了请求失败的原因。
另请参阅 QAbstractOAuth2::error() 和QAbstractOAuthReplyHandler::tokenRequestErrorOccurred()。
[virtual protected] void QAbstractOAuth::resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> ¶meters)
构建将在网页浏览器中使用的资源所有者授权 URL:以url 作为基础 URL,并使用parameters 生成查询字符串。当 URL 准备就绪时,将发出authorizeWithBrowser() 信号,并附带生成的 URL。
另请参阅 authorizeWithBrowser()。
void QAbstractOAuth::setAuthorizationUrl(const QUrl &url)
将授权请求 URL 设置为url 。该地址将用于允许用户授予应用程序代表用户进行经过身份验证的调用的权限。
注意: 这是属性authorizationUrl 的设置 函数。
另请参阅 authorizationUrl()。
void QAbstractOAuth::setClientIdentifier(const QString &clientIdentifier)
将当前客户端标识符设置为clientIdentifier 。
注意: 这是属性clientIdentifier 的设置 函数。
另请参阅 clientIdentifier()。
void QAbstractOAuth::setContentType(QAbstractOAuth::ContentType contentType)
将当前的 Content-Type 设置为contentType 。
注意: 这是属性contentType 的设置 函数。
另请参阅 contentType()。
void QAbstractOAuth::setModifyParametersFunction(const QAbstractOAuth::ModifyParametersFunction &modifyParametersFunction)
设置参数修改函数modifyParametersFunction 。该函数用于自定义在指定的授权阶段发送给服务器的参数。调用该函数的次数取决于身份验证过程中使用的流程。
另请参阅 modifyParametersFunction() 和Stage 。
void QAbstractOAuth::setNetworkAccessManager(QNetworkAccessManager *networkAccessManager)
将网络管理器设置为networkAccessManager 。QAbstractOAuth 不会获取networkAccessManager 的所有权。如果未设置自定义网络访问管理器,则使用内部网络访问管理器。该网络访问管理器将用于向身份验证服务器发送请求,并向 Web 服务发送经过身份验证的请求。
另请参阅 networkAccessManager() 和QNetworkAccessManager 。
void QAbstractOAuth::setReplyHandler(QAbstractOAuthReplyHandler *handler)
将当前回复处理程序设置为handler 。
注意:不会 获取对 `handler` 的所有权。
另请参阅 replyHandler()。
[protected] void QAbstractOAuth::setStatus(QAbstractOAuth::Status status)
将当前状态设置为status 。此方法供基于QAbstractOAuth 的类使用。
另请参阅 status()。
void QAbstractOAuth::setToken(const QString &token)
将用于对经过身份验证的请求进行签名的令牌设置为token 。
注意: 这是属性token 的设置 函数。
另请参阅 token()。
QAbstractOAuth::Status QAbstractOAuth::status() const
返回当前的身份验证状态。
注意: 这是 status 属性的获取器 函数。
QString QAbstractOAuth::token() const
返回用于对经过身份验证的请求进行签名的令牌。
注意: 这是 token 属性的获取 函数。
另请参阅 setToken()。
© 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.