Я играю с этой библиотекой, и я испытываю раздражающий сценарий, который, по моему мнению, происходит из-за какого-то конфликта в аутентификации файлов cookie или заголовков.
Когда я захожу в одну учетную запись, все отлично работает.Но затем, при попытке войти в другую учетную запись, он просто игнорирует предоставленные новые данные и проходит аутентификацию с данными old и подключается к учетной записи old .Неважно, существует ли email
или password
.(Пробовал также с поддельными данными).
В библиотеке нет правильного logout
метода, который имеет смысл, он вам на самом деле не нужен, потому что когда вы запускаете его, просто используя node
на своем компьютере без участия сервера, и нет ни файлов cookie, ни каких-либоданные в памяти, все отлично работает.Я могу войти на столько аккаунтов, сколько захочу.
Проблема заключается в запуске его на сервере Express.
КОД:
// api.js
const OKCupid = require("./okc_lib");
const Promise = require("bluebird");
const okc = Promise.promisifyAll(new OKCupid());
async function start(req, res, next) {
const {
body: {
username,
password
}
} = req;
try {
await okc.loginAsync(username, password);
okc.search(
searchOpt,
(err, resp, body) => {
if (err) return console.log({ err });
const results = body.data;
// do dsomething with results
return res.status(200).json({ message: "OK" });
});
}
);
} catch (error) {
res.status(400).json({ message: "Something went wrong", error });
}
}
module.exports = { start };
// routes.js
const express = require("express");
const router = express.Router();
const { start, login } = require("../actions/okc");
router.post("/login", login);
router.post("/start", start);
module.exports = router;
Так что при первой попытке опубликовать на url/login
все работает нормально.Но когда вы пытаетесь сделать это снова с разными username
и password
, он просто проходит и игнорирует новые данные и подключается к старым.
В рамках моего исследования я посмотрел на исходный кодбиблиотеки и нашел метод clearOAuthToken
, который очищает токен из заголовка.Однако это на самом деле ничего не делало.Поэтому я попытался удалить инициализацию jar
из помощника requester
, и это было единственное, что помогло мне перейти и войти в другую учетную запись. НО это было только для экспериментов и не может быть решением, так как вам нужны эти куки для других частей библиотеки.Это было только доказательство того, что проблема не в заголовках, а в файлах cookie.
Есть идеи, как "сбросить" состояние сервера между каждым вызовом?