我正在使用TD美国人的API,并试图为访问令牌刷新过程实现一个自动化的工作流。我已经选择使用npm包“傀儡旅行者”以编程方式登录到TD Ameritrade网站,并从一个URI中检索我的代码(需要URL解码访问令牌刷新过程所需的长字符串),在登录并接受访问我的交易帐户的进一步权限的条件后,该URI将被重定向到该URI。
在我的头上一切都很好,但是当我将代码部署到heroku时,对URI的重定向不会发生,而且我只能在重定向到URI之前获取我所在站点的URL。
这是我的代码:
const getTdAmeritradeCode = async () => {
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上时,代码就会失败,并且不会被重定向到URI。
发布于 2022-03-29 07:55:27
问题是,我让我的TD美国版应用程序重定向到我的Heroku应用程序的URL。我相信,这是因为Heroku应用程序不打算向自己发出GET请求。最后,我在我的TD、Ameritrade和Heroku应用程序中更改了重定向URI,并且我能够毫无问题地获得代码。
https://stackoverflow.com/questions/70270966
复制相似问题