1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QOAUTH2AUTHORIZATIONCODEFLOW_H
5#define QOAUTH2AUTHORIZATIONCODEFLOW_H
6
7#include <QtNetworkAuth/qoauthglobal.h>
8
9#ifndef QT_NO_HTTP
10
11#include <QtNetworkAuth/qabstractoauth2.h>
12
13QT_BEGIN_NAMESPACE
14
15class QUrl;
16class QString;
17class QNetworkAccessManager;
18
19class QOAuth2AuthorizationCodeFlowPrivate;
20class Q_OAUTH_EXPORT QOAuth2AuthorizationCodeFlow : public QAbstractOAuth2
21{
22 Q_OBJECT
23 Q_PROPERTY(QUrl accessTokenUrl
24 READ accessTokenUrl
25 WRITE setAccessTokenUrl
26 NOTIFY accessTokenUrlChanged)
27 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
28
29public:
30 explicit QOAuth2AuthorizationCodeFlow(QObject *parent = nullptr);
31 explicit QOAuth2AuthorizationCodeFlow(QNetworkAccessManager *manager,
32 QObject *parent = nullptr);
33
34 QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier,
35 QNetworkAccessManager *manager,
36 QObject *parent = nullptr);
37
38 QOAuth2AuthorizationCodeFlow(const QUrl &authorizationUrl,
39 const QUrl &accessTokenUrl,
40 QNetworkAccessManager *manager,
41 QObject *parent = nullptr);
42
43 QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier,
44 const QUrl &authorizationUrl,
45 const QUrl &accessTokenUrl,
46 QNetworkAccessManager *manager,
47 QObject *parent = nullptr);
48
49 ~QOAuth2AuthorizationCodeFlow();
50
51 QUrl accessTokenUrl() const;
52 void setAccessTokenUrl(const QUrl &accessTokenUrl);
53
54 enum class PkceMethod : quint8 {
55 S256,
56 Plain,
57 None = 255,
58 };
59 Q_ENUM(PkceMethod)
60
61 void setPkceMethod(PkceMethod method, qsizetype length = 43) ;
62 PkceMethod pkceMethod() const noexcept;
63
64public Q_SLOTS:
65 void grant() override;
66 void refreshAccessToken();
67
68protected:
69 QUrl buildAuthenticateUrl(const QMultiMap<QString, QVariant> &parameters = {});
70 void requestAccessToken(const QString &code);
71 void resourceOwnerAuthorization(const QUrl &url,
72 const QMultiMap<QString, QVariant> &parameters = {}) override;
73
74Q_SIGNALS:
75 void accessTokenUrlChanged(const QUrl &accessTokenUrl);
76
77private:
78 Q_DISABLE_COPY(QOAuth2AuthorizationCodeFlow)
79 Q_DECLARE_PRIVATE(QOAuth2AuthorizationCodeFlow)
80};
81
82QT_END_NAMESPACE
83
84#endif // QT_NO_HTTP
85
86#endif // QOAUTH2AUTHORIZATIONCODEFLOW_H
87

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtnetworkauth/src/oauth/qoauth2authorizationcodeflow.h