我正在尝试使用令牌查询 github 的 api。Github 的 api 接受生成的令牌,前提是它们作为基本身份验证标头发送。
如果在没有身份验证的情况下进行调用,API 不会返回 HTTP 401,这意味着如果想要使用基本身份验证查询他们的 api,则必须先发制人地填写标头,而不是进行往返。
我现在正在尝试使用 libsoup 和 Gjs 查询 API。
我注意到 SoupAuthManager 的功能似乎与我需要的完全匹配(此处为 soup_auth_manager_use_auth ),但找不到调用它的方法。
这可用于“预加载” 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 并强制进行基本身份验证?