#javascript #node.js #heroku #puppeteer
#язык JavaScript #node.js #героку #кукольник
Вопрос:
Я использую API TD Ameritrade и пытаюсь реализовать автоматизированный рабочий процесс для процесса обновления маркера доступа. Я решил использовать пакет npm «кукловод», чтобы программно войти на веб-сайт разработчика TD Ameritrade и получить свой код(длинную строку, которая должна быть расшифрована по URL-адресу, необходимому для процесса обновления маркера доступа) из URI, на который перенаправляется бот после входа в систему и принятия условий для дальнейших разрешений на доступ к моему торговому счету.
С моей стороны все работало нормально, но когда я развернул свой код в heroku, перенаправление на URI не происходит, и я могу захватить только URL-адрес сайта, на котором я был до перенаправления на URI.
Вот мой код:
const getTdAmeritradeCode = async () =gt; { const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox','--disable-setuid-sandbox'] }); const page = await browser.newPage(); await page.goto(process.env.REFRESH_TOKEN_REFRESH_LINK); await page.type("#username0", process.env.TD_AMERITRADE_USERNAME); await page.type("#password1", process.env.TD_AMERITRADE_PASSWORD); const [response0] = await Promise.all([ page.waitForNavigation(), page.click("#accept"), ]); const [response1] = await Promise.all([ page.waitForNavigation(), page.click("#accept"), ]); let tdAmeritradeCode = decode(await page.url().slice(50)); // 50 is the number of characters in the url before the code await browser.close(); return tdAmeritradeCode; }
Это метод, который я нашел в документации кукольника, но, похоже, он не работает. Как я уже говорил ранее, код работает так, как задумано на моей машине, но при развертывании на heroku код не response1
выполняет обещание и не перенаправляется на URI.