QOAuthHttpServerReplyHandler Class

ローカル HTTP サーバをセットアップすることで、ループバック・リダイレクトを処理します。詳細...

Header: #include <QOAuthHttpServerReplyHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
Inherits: QOAuthOobReplyHandler

パブリック関数

QOAuthHttpServerReplyHandler(QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(quint16 port, QObject *parent = nullptr)
QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent = nullptr)
virtual ~QOAuthHttpServerReplyHandler()
QString callbackPath() const
QString callbackText() const
void close()
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
quint16 port() const
void setCallbackPath(const QString &path)
void setCallbackText(const QString &text)

詳細な説明

このクラスは、ループバックリダイレクトを使用するOAuth 2.0認証プロセスのリプライハンドラとして機能します。

リダイレクト URIは、認可サーバーがユーザーエージェント (通常はシステムブラウザ) をリダイレクトする場所です。ループバックリダイレクト URI はスキームとしてhttp を使用し、ホストとしてlocalhostまたは IP アドレスリテラル (IPv4 and IPv6 を参照)を使用します。

QOAuthHttpServerReplyHandlerはlocalhostサーバーを設定する。認可サーバーがブラウザをこのlocalhostアドレスにリダイレクトすると、リプライハンドラはリダイレクトURIのクエリーパラメータを解析し、a signal で認可完了のシグナルを送る。

他のリダイレクトURIスキームを扱うには、QOAuthUriSchemeReplyHandler を参照のこと。

次のコードは使い方を示している。まず、必要な変数:

QOAuth2AuthorizationCodeFlow m_oauth;
QOAuthHttpServerReplyHandler *m_handler = nullptr;

続いてOAuthのセットアップ(簡潔のためエラー処理は省略):

m_oauth.setAuthorizationUrl(QUrl("https://some.authorization.service/v3/authorize"_L1));
m_oauth.setAccessTokenUrl(QUrl("https://some.authorization.service/v3/access_token"_L1));
m_oauth.setClientIdentifier("a_client_id"_L1);
m_oauth.setScope("read"_L1);

m_handler = new QOAuthHttpServerReplyHandler(1234, this);

connect(&m_oauth, &QAbstractOAuth::authorizeWithBrowser, this, &QDesktopServices::openUrl);
connect(&m_oauth, &QAbstractOAuth::granted, this, [this]() {
    // Here we use QNetworkRequestFactory to store the access token
    m_api.setBearerToken(m_oauth.token().toLatin1());
    m_handler->close();
});

最後に、URIスキームのreply-handlerをセットアップする:

m_oauth.setReplyHandler(m_handler);

// Initiate the authorization
if (m_handler->isListening()) {
    m_oauth.grant();
}

IPv4とIPv6

現在、ハンドラがループバックアドレス、IPv4 any address、IPv6 any addressの場合、使用されるコールバックはhttp://localhost:{port}/{path}の形式です。それ以外の特定のIPアドレスの場合は、実際のIPリテラルを使用する。例えば、IPv4の場合はhttp://192.168.0.2:{port}/{path}となります。

メンバ関数ドキュメント

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(QObject *parent = nullptr)

parent を親オブジェクトとして QOAuthHttpServerReplyHandler オブジェクトを構築する。ポート0 およびアドレスNull を指定してlisten() を呼び出します。

listen()も参照

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(quint16 port, QObject *parent = nullptr)

parent を親オブジェクトとして QOAuthHttpServerReplyHandler オブジェクトを構築します。port およびアドレスNull を指定してlisten() をコールします。

listen()も参照

[explicit] QOAuthHttpServerReplyHandler::QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent = nullptr)

parent を親オブジェクトとして QOAuthHttpServerReplyHandler オブジェクトを構築します。address およびport を使用してlisten() をコールします。

listen()も参照してください

[virtual noexcept] QOAuthHttpServerReplyHandler::~QOAuthHttpServerReplyHandler()

QOAuthHttpServerReplyHandler オブジェクトを破棄します。接続/リダイレクションのリッスンを停止します。

close()も参照

QString QOAuthHttpServerReplyHandler::callbackPath() const

callback() /OAuth2 redirect_uri パラメータの path コンポーネントとして使用するパスを返します。

setCallbackPath()も参照 ください。

QString QOAuthHttpServerReplyHandler::callbackText() const

認証段階の最後に、リダイレクトのレスポンスとして使用するテキストを返します。

このテキストはシンプルな HTML ページでラップされ、 リダイレクトを行ったブラウザ / ユーザエージェントからユーザに表示されます。

デフォルトのテキストは

Callback received. Feel free to close this page.

setCallbackText()も参照

void QOAuthHttpServerReplyHandler::close()

このハンドラに、接続/リダイレクトのリッスンを停止するように指示します。

listen()も参照

bool QOAuthHttpServerReplyHandler::isListening() const

このハンドラが現在 listen している場合はtrue を返し、そうでない場合はfalse を返します。

listen() およびclose()も参照

bool QOAuthHttpServerReplyHandler::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

このハンドラがaddress およびport の着信コネクション/リダイレクションを listen するように指示する。リスニングに成功した場合はtrue を返し、そうでない場合はfalse を返す。

QOAuth2AuthorizationCodeFlow::grantアクティブリスニングが必要なのは、最初の認証フェーズを実行するときだけである。

認証に成功したら、リスナーをクローズすることを推奨する。リスニングは、requesting access tokens やリフレッシュには必要ない。

この関数がNulladdress として呼び出された場合、ハンドラはLocalHost のリスニングを試み、失敗した場合はLocalHostIPv6 のリスニングを試みる。

IPv4 and IPv6 も参照のこと。

close()、isListening()、QTcpServer::listen()参照のこと。

quint16 QOAuthHttpServerReplyHandler::port() const

このハンドラがリッスンしているポートを返し、そうでない場合は 0 を返す。

listen() およびisListening() も参照

void QOAuthHttpServerReplyHandler::setCallbackPath(const QString &path)

callback() のパス・コンポーネントとして使用するpath を設定する。

callbackPath() も参照

void QOAuthHttpServerReplyHandler::setCallbackText(const QString &text)

認可段階終了時のリダイレクトの応答として使用するtext を設定する。

callbackText() も参照して ください。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。