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 } |
属性
- authorizationUrl : QUrl
- contentType : QAbstractOAuth::ContentType
- extraTokens : const QVariantMap
- status : const Status
公共功能
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 协议》中所述:OAuth 1.0 协议》中所述:资源所有者授权
访问功能:
QUrl | authorizationUrl() const |
void | setAuthorizationUrl(const QUrl &url) |
通知者信号:
void | authorizationUrlChanged(const QUrl &url) |
contentType : QAbstractOAuth::ContentType
该属性包含发送授权参数时使用的 Content-Type 类型。
该属性控制通过 POST 请求发送参数时的格式。还会添加一个合适的头信息。
访问功能:
QAbstractOAuth::ContentType | contentType() const |
void | setContentType(QAbstractOAuth::ContentType contentType) |
通知器信号:
void | contentTypeChanged(QAbstractOAuth::ContentType contentType) |
[read-only]
extraTokens : const QVariantMap
该属性保存从服务器接收的额外令牌。
访问功能:
QVariantMap | extraTokens() const |
Notifier 信号:
void | extraTokensChanged(const QVariantMap &tokens) |
[read-only]
status : const Status
该属性保存当前身份验证状态。
访问功能:
QAbstractOAuth::Status | status() const |
Notifier 信号:
void | statusChanged(QAbstractOAuth::Status status) |
成员函数 文档
[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 用于创建请求。
另请参阅 超文本传输协议 - HTTP/1.1:DELETE
注: 可通过元对象系统和 QML 调用该函数。参见Q_INVOKABLE 。
QVariantMap QAbstractOAuth::extraTokens() const
返回身份验证过程中从服务器接收的额外令牌。
注: 属性 extraTokens 的获取函数。
另请参阅 extraTokensChanged().
[static protected]
QByteArray QAbstractOAuth::generateRandomString(quint8 length)
生成一个可用作状态或非密钥的随机字符串。参数length 决定生成字符串的大小。
另请参阅 OAuth 1.0 协议:Nonce 和 Timestamp。
注意:此函数是线程安全的。
[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())
通过添加认证请求所需的头和body ,授权给定的request 。
verb 必须是有效的 HTTP verb,且与用于发送request 的 verb 相同。
[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 的所有权。如果没有设置自定义网络访问管理器,则使用内部网络访问管理器。该网络访问管理器将用于向身份验证服务器发出请求,以及向网络服务发出经过身份验证的请求。
另请参阅 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
返回当前身份验证状态。
注: 属性状态的获取函数。
QString QAbstractOAuth::token() const
返回用于签署已验证请求的令牌。
注: 属性令牌的获取函数。
另请参阅 setToken().
© 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.