1

トークンを使用して github の API にクエリを実行しようとしています。Github の API は、生成されたトークンが基本認証ヘッダーとして送信された場合に受け入れます。

呼び出しが認証なしで行われた場合、API は HTTP 401 を返しません。つまり、基本認証を使用して API を照会する場合は、ラウンド トリップを行うのではなく、プリエンプティブにヘッダーを入力する必要があります。

libsoup と Gjs を使用して API をクエリしようとしています。

SoupAuthManager には、必要なもの (soup_auth_manager_use_auth here ) と完全に一致するように見える関数があることに気付きましたが、それを呼び出す方法が見つかりません。

これは、manager の認証キャッシュを「プリロード」するために使用でき、401 応答が返されることが事前にわかっている場合に余分な HTTP ラウンド トリップを回避します。

これは私が現在使用しているものですが、SoupAuthManager はセッションのプライベート オブジェクトであるため機能しません。したがって、プログラムの実際の動作には影響しません

let httpSession = new Soup.Session();
let authUri = new Soup.URI(url);
authUri.set_user(this.handle);
authUri.set_password(this.token);
let message = new Soup.Message({method: 'GET', uri: authUri});

let authManager = new Soup.AuthManager();
let auth = new Soup.AuthBasic({host: 'api.github.com', realm: 'Github Api'});

authManager.use_auth(authUri, auth);
httpSession.queue_message(message, ...);

最初の往復で基本認証を強制するために使用できる他の方法はありますか? または、gjs から github の API を呼び出して基本認証を強制するために使用できる他のライブラリはありますか?

4

1 に答える 1