首页 > 解决方案 > 如何在 puppeteer 中返回重定向链接的值?

问题描述

目标:我正在尝试完成网站 (api) 身份验证过程的第一步。为此,最后一步是在重定向后获取 url(地址栏)中的代码(这是我的猜测)。

简而言之,我已经弄清楚了如何输入用户名/密码。从那里它加载一个新页面,然后该页面加载另一个页面(我最好的猜测是它会检查以确保所有信息都是正确的),该页面在 url 中包含一个代码。

var puppeteer = require("puppeteer");
let clientInfo = require("./Client_Information.json");

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(
    `https://url-goes-here.com?response_type=code&client_id=${clientInfo.client_id}`
  );
  await page.screenshot({ path: "./ScreenShots/ScreenShot.png" });
  // Enter username GOOD
  await page.click("#user_id");
  await page.keyboard.type(clientInfo.user_name);
  await page.screenshot({ path: "./ScreenShots/ScreenShot1.png" });
  console.log("Username has been inserted");
  // Accepting Username GOOD
  await page.click(".andes-button--large");
  await page.screenshot({ path: "./ScreenShots/ScreenShot2.png" });
  await page.keyboard.press("Accept"); //Enter Key
  await page.screenshot({ path: "./ScreenShots/ScreenShot3.png" });
  //Delay 1.5 Seconds
  await page.waitForTimeout(1000);
  // Enter Password GOOD
  await page.click("#password");
  await page.keyboard.type(clientInfo.password);
  await page.screenshot({ path: "./ScreenShots/ScreenShot4.png" });
  console.log("Password has been inserted");
  // Accepting Password GOOD
  await page.click("#action-complete");
  await page.screenshot({ path: "./ScreenShots/ScreenShot5.png" });
  await page.keyboard.press("Accept"); //Enter Key
  await page.screenshot({ path: "./ScreenShots/ScreenShot6.png" });
  //Delay 4 Seconds
  await page.waitForNavigation();
  await page.waitForTimeout(1000);
  //URL Fetch GOOD
  const url1 = await page.url();
  console.log("Page URL : " + url1);
  //Store URL
  clientInfo.Step1_Url = url1;
  //NOTE New Section
  await page.waitForTimeout(10000);
  const url2 = await page.url();
  console.log("Page URL : " + url2);
  await browser.close();
})();

在 //NOTE New Section 区域中,我正在等待获得实际的解析重定向,但我得到的是chrome-error://chromewebdata/与预期的 url+code。想法?

标签: javascriptnode.jspromisepuppeteer

解决方案


问题在于redirect_uri。我将它设置为 localhost ,这似乎导致 puppeteer 无法检索它。将其更改为heroku后,它立即起作用。


推荐阅读