QAbstractOAuth Class
The QAbstractOAuth class is the base of all implementations of OAuth authentication methods. More...
Header: | #include <QAbstractOAuth> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS NetworkAuth) target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth) |
qmake: | QT += networkauth |
Inherits: | QObject |
Inherited By: |
Public Types
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 } |
Properties
- authorizationUrl : QUrl
- contentType : QAbstractOAuth::ContentType
- extraTokens : const QVariantMap
- status : const Status
Public Functions
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 |
Public Slots
virtual void | grant() = 0 |
Signals
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) |
Protected Functions
QString | callback() const |
virtual void | resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> ¶meters) |
void | setStatus(QAbstractOAuth::Status status) |
Static Protected Members
QByteArray | generateRandomString(quint8 length) |
Detailed Description
The class defines the basic interface of the OAuth authentication classes. By inheriting this class, you can create custom authentication methods for different web services.
It also contains some functions to ease the process of implementing different authentication flows.
Member Type Documentation
enum class QAbstractOAuth::ContentType
Indicates the MIME Content-Type of the POST methods in authenticated calls.
Constant | Value | Description |
---|---|---|
QAbstractOAuth::ContentType::WwwFormUrlEncoded | 0 | Uses application/x-www-form-urlencoded format. |
QAbstractOAuth::ContentType::Json | 1 | Uses application/json format. |
enum class QAbstractOAuth::Error
Indicates the latest received error.
Constant | Value | Description |
---|---|---|
QAbstractOAuth::Error::NoError | 0 | No error has ocurred. |
QAbstractOAuth::Error::NetworkError | 1 | Failed to connect to the server. |
QAbstractOAuth::Error::ServerError | 2 | The server answered the request with an error, or its response was not successfully received (for example, due to a state mismatch). |
QAbstractOAuth::Error::OAuthTokenNotFoundError | 3 | The server's response to a token request provided no token identifier. |
QAbstractOAuth::Error::OAuthTokenSecretNotFoundError | 4 | The server's response to a token request provided no token secret. |
QAbstractOAuth::Error::OAuthCallbackNotVerified | 5 | The authorization server has not verified the supplied callback URI in the request. This usually happens when the provided callback does not match with the callback supplied during client registration. |
QAbstractOAuth::Error::ClientError (since Qt 6.9) | 6 | An error that is attributable to the client application (e.g. missing configuration or attempting a request in a state where it's not allowed). Currently used by QOAuth2DeviceAuthorizationFlow. |
QAbstractOAuth::Error::ExpiredError (since Qt 6.9) | 7 | A token has expired. Currently used by QOAuth2DeviceAuthorizationFlow. |
enum class QAbstractOAuth::Stage
Identifies an authentication stage. It's passed to a modifyParametersFunction so that it can make different changes to parameters at each call to it during the process of authentication.
Constant | Value | Description |
---|---|---|
QAbstractOAuth::Stage::RequestingTemporaryCredentials | 0 | Preparing the temporary credentials request. |
QAbstractOAuth::Stage::RequestingAuthorization | 1 | Preparing the authorization grant URL. |
QAbstractOAuth::Stage::RequestingAccessToken | 2 | Preparing the token request. |
QAbstractOAuth::Stage::RefreshingAccessToken | 3 | Preparing the access token refresh. |
enum class QAbstractOAuth::Status
Indicates the current authentication status.
Constant | Value | Description |
---|---|---|
QAbstractOAuth::Status::NotAuthenticated | 0 | No token has been retrieved. |
QAbstractOAuth::Status::TemporaryCredentialsReceived | 1 | Temporary credentials have been received, this status is used in some OAuth authetication methods. |
QAbstractOAuth::Status::Granted | 2 | Token credentials have been received and authenticated calls are allowed. |
QAbstractOAuth::Status::RefreshingToken | 3 | New token credentials have been requested. |
Property Documentation
authorizationUrl : QUrl
This property holds the URL used to request the Resource Owner Authorization as described in: The OAuth 1.0 Protocol: Resource Owner Authorization
Access functions:
QUrl | authorizationUrl() const |
void | setAuthorizationUrl(const QUrl &url) |
Notifier signal:
void | authorizationUrlChanged(const QUrl &url) |
contentType : QAbstractOAuth::ContentType
This property holds the Content-Type to use when sending authorization parameters.
This property controls how parameters are formatted when sent with a POST request. A suitable header is also added.
Access functions:
QAbstractOAuth::ContentType | contentType() const |
void | setContentType(QAbstractOAuth::ContentType contentType) |
Notifier signal:
void | contentTypeChanged(QAbstractOAuth::ContentType contentType) |
[read-only]
extraTokens : const QVariantMap
This property holds the extra tokens received from the server.
Access functions:
QVariantMap | extraTokens() const |
Notifier signal:
void | extraTokensChanged(const QVariantMap &tokens) |
[read-only]
status : const Status
This property holds the current authentication status.
Access functions:
QAbstractOAuth::Status | status() const |
Notifier signal:
void | statusChanged(QAbstractOAuth::Status status) |
Member Function Documentation
[virtual noexcept]
QAbstractOAuth::~QAbstractOAuth()
Destroys the abstract OAuth.
QUrl QAbstractOAuth::authorizationUrl() const
Returns the authorization request URL.
Note: Getter function for property authorizationUrl.
See also setAuthorizationUrl().
[signal]
void QAbstractOAuth::authorizeWithBrowser(const QUrl &url)
This signal is emitted when the url generated by resourceOwnerAuthorization() is ready to be used in the web browser to allow the application to impersonate the user.
See also resourceOwnerAuthorization().
[protected]
QString QAbstractOAuth::callback() const
Returns the current callback string corresponding to the current reply handler. The returned string is the string sent to the server to specify the callback URI, or the word identifying the alternative method in headless devices.
See also replyHandler() and setReplyHandler().
QString QAbstractOAuth::clientIdentifier() const
Returns the current client identifier used in the authentication process.
Note: Getter function for property clientIdentifier.
See also setClientIdentifier().
QAbstractOAuth::ContentType QAbstractOAuth::contentType() const
Returns the current Content-Type used in authenticated calls.
Note: Getter function for property contentType.
See also setContentType() and post().
[pure virtual invokable]
QNetworkReply *QAbstractOAuth::deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
Sends an authenticated DELETE request and returns a new QNetworkReply. The url and parameters are used to create the request.
See also: Hypertext Transfer Protocol – HTTP/1.1: DELETE
Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.
QVariantMap QAbstractOAuth::extraTokens() const
Returns the extra tokens received from the server during authentication.
Note: Getter function for property extraTokens.
See also extraTokensChanged().
[static protected]
QByteArray QAbstractOAuth::generateRandomString(quint8 length)
Generates a random string which could be used as state or nonce. The parameter length determines the size of the generated string.
See also: The OAuth 1.0 Protocol: Nonce and Timestamp.
Note: This function is thread-safe.
[pure virtual invokable]
QNetworkReply *QAbstractOAuth::get(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
Sends an authenticated GET request and returns a new QNetworkReply. The url and parameters are used to create the request.
See also: Hypertext Transfer Protocol – HTTP/1.1: GET
Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.
[pure virtual slot]
void QAbstractOAuth::grant()
Override this function to implement the corresponding authentication flow in the subclasses. Client code calls this function to start the authentication workflow. This may require user interaction: for example, asking the user's authorization via a web browser. When the authentication succeeds, it should emit granted(); this gives notice that credentials are ready to be used in authenticated calls.
[signal]
void QAbstractOAuth::granted()
This signal is emitted when the authorization flow finishes successfully.
[pure virtual invokable]
QNetworkReply *QAbstractOAuth::head(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
Sends an authenticated HEAD request and returns a new QNetworkReply. The url and parameters are used to create the request.
See also: Hypertext Transfer Protocol – HTTP/1.1: HEAD
Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.
QAbstractOAuth::ModifyParametersFunction QAbstractOAuth::modifyParametersFunction() const
Returns the current parameter-modification function.
See also setModifyParametersFunction() and Stage.
QNetworkAccessManager *QAbstractOAuth::networkAccessManager() const
Returns the current network access manager used to send the requests to the server during authentication flows or to make authentication calls.
See also setNetworkAccessManager() and QNetworkAccessManager.
[pure virtual invokable]
QNetworkReply *QAbstractOAuth::post(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
Sends an authenticated POST request and returns a new QNetworkReply. The url and parameters are used to create the request.
See also: Hypertext Transfer Protocol – HTTP/1.1: POST
Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.
[pure virtual]
void QAbstractOAuth::prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray())
Authorizes the given request by adding a header and body to it required for authenticated requests.
The verb must be a valid HTTP verb and the same as the one that will be used to send the request.
[pure virtual invokable]
QNetworkReply *QAbstractOAuth::put(const QUrl &url, const QVariantMap ¶meters = QVariantMap())
Sends an authenticated PUT request and returns a new QNetworkReply. The url and parameters are used to create the request.
See also: Hypertext Transfer Protocol – HTTP/1.1: PUT
Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.
QAbstractOAuthReplyHandler *QAbstractOAuth::replyHandler() const
Returns the reply handler currently in use.
See also setReplyHandler() and QAbstractOAuthReplyHandler.
[signal]
void QAbstractOAuth::requestFailed(const QAbstractOAuth::Error error)
This signal is emitted to indicate that a request to a server has failed. The error supplied indicates how the request failed.
See also QAbstractOAuth2::error() and QAbstractOAuthReplyHandler::tokenRequestErrorOccurred().
[virtual protected]
void QAbstractOAuth::resourceOwnerAuthorization(const QUrl &url, const QMultiMap<QString, QVariant> ¶meters)
Builds the resource owner authorization URL to be used in the web browser: url is used as the base URL and the query is created using parameters. When the URL is ready, the authorizeWithBrowser() signal will be emitted with the generated URL.
See also authorizeWithBrowser().
void QAbstractOAuth::setAuthorizationUrl(const QUrl &url)
Sets the authorization request URL to url. This address will be used to allow the user to grant the application the ability to make authenticated calls on behalf of the user.
Note: Setter function for property authorizationUrl.
See also authorizationUrl().
void QAbstractOAuth::setClientIdentifier(const QString &clientIdentifier)
Sets the current client identifier to clientIdentifier.
Note: Setter function for property clientIdentifier.
See also clientIdentifier().
void QAbstractOAuth::setContentType(QAbstractOAuth::ContentType contentType)
Sets the current Content-Type to contentType.
Note: Setter function for property contentType.
See also contentType().
void QAbstractOAuth::setModifyParametersFunction(const QAbstractOAuth::ModifyParametersFunction &modifyParametersFunction)
Sets the parameter-modification function modifyParametersFunction. This function is used to customize the parameters sent to the server during a specified authorization stage. The number of calls to this function depends on the flow used during the authentication.
See also modifyParametersFunction() and Stage.
void QAbstractOAuth::setNetworkAccessManager(QNetworkAccessManager *networkAccessManager)
Sets the network manager to networkAccessManager. QAbstractOAuth does not take ownership of networkAccessManager. If no custom network access manager is set, an internal network access manager is used. This network access manager will be used to make the request to the authentication server and the authenticated request to the web service.
See also networkAccessManager() and QNetworkAccessManager.
void QAbstractOAuth::setReplyHandler(QAbstractOAuthReplyHandler *handler)
Sets the current reply handler to handler.
Note: Does not take ownership of handler.
See also replyHandler().
[protected]
void QAbstractOAuth::setStatus(QAbstractOAuth::Status status)
Sets the current status to status. This method is for use by classes based on QAbstractOAuth.
See also status().
void QAbstractOAuth::setToken(const QString &token)
Sets the token used to sign authenticated requests to token.
Note: Setter function for property token.
See also token().
QAbstractOAuth::Status QAbstractOAuth::status() const
Returns the current authentication status.
Note: Getter function for property status.
See also setStatus() and Status.
QString QAbstractOAuth::token() const
Returns the token used to sign the authenticated requests.
Note: Getter function for property token.
See also setToken().
© 2024 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.