// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef QOAUTH2AUTHORIZATIONCODEFLOW_H #define QOAUTH2AUTHORIZATIONCODEFLOW_H #include #ifndef QT_NO_HTTP #include QT_BEGIN_NAMESPACE class QUrl; class QString; class QNetworkAccessManager; class QOAuth2AuthorizationCodeFlowPrivate; class Q_OAUTH_EXPORT QOAuth2AuthorizationCodeFlow : public QAbstractOAuth2 { Q_OBJECT #if QT_DEPRECATED_SINCE(6, 13) Q_PROPERTY(QUrl accessTokenUrl READ accessTokenUrl WRITE setAccessTokenUrl NOTIFY accessTokenUrlChanged) #endif Q_CLASSINFO("RegisterEnumClassesUnscoped", "false") public: explicit QOAuth2AuthorizationCodeFlow(QObject *parent = nullptr); explicit QOAuth2AuthorizationCodeFlow(QNetworkAccessManager *manager, QObject *parent = nullptr); QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, QNetworkAccessManager *manager, QObject *parent = nullptr); QOAuth2AuthorizationCodeFlow(const QUrl &authorizationUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr); QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, const QUrl &authorizationUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager, QObject *parent = nullptr); ~QOAuth2AuthorizationCodeFlow(); #if QT_DEPRECATED_SINCE(6, 13) QT_DEPRECATED_VERSION_X_6_13("Use QAbstractOAuth2::tokenUrl() instead.") QUrl accessTokenUrl() const; QT_DEPRECATED_VERSION_X_6_13("Use QAbstractOAuth2::setTokenUrl() instead.") void setAccessTokenUrl(const QUrl &accessTokenUrl); #endif enum class PkceMethod : quint8 { S256, Plain, None = 255, }; Q_ENUM(PkceMethod) void setPkceMethod(PkceMethod method, qsizetype length = 43) ; PkceMethod pkceMethod() const noexcept; public Q_SLOTS: void grant() override; #if QT_DEPRECATED_SINCE(6, 13) QT_DEPRECATED_VERSION_X_6_13("Use QAbstractOAuth2::refreshTokens() instead") void refreshAccessToken(); #endif protected Q_SLOTS: void refreshTokensImplementation() QT7_ONLY(override); protected: QUrl buildAuthenticateUrl(const QMultiMap ¶meters = {}); void requestAccessToken(const QString &code); void resourceOwnerAuthorization(const QUrl &url, const QMultiMap ¶meters = {}) override; Q_SIGNALS: #if QT_DEPRECATED_SINCE(6, 13) QT_MOC_COMPAT QT_DEPRECATED_VERSION_X_6_13("Use QAbstractOAuth2::tokenUrlChanged() instead.") void accessTokenUrlChanged(const QUrl &accessTokenUrl); #endif private: Q_DISABLE_COPY(QOAuth2AuthorizationCodeFlow) Q_DECLARE_PRIVATE(QOAuth2AuthorizationCodeFlow) }; QT_END_NAMESPACE #endif // QT_NO_HTTP #endif // QOAUTH2AUTHORIZATIONCODEFLOW_H