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
を返します。
bool QOAuthHttpServerReplyHandler::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
このハンドラがaddress およびport の着信コネクション/リダイレクションを listen するように指示する。リスニングに成功した場合はtrue
を返し、そうでない場合はfalse
を返す。
QOAuth2AuthorizationCodeFlow::grantアクティブリスニングが必要なのは、最初の認証フェーズを実行するときだけである。
認証に成功したら、リスナーをクローズすることを推奨する。リスニングは、requesting access tokens やリフレッシュには必要ない。
この関数がNull をaddress として呼び出された場合、ハンドラは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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。