mirror of
https://github.com/foxhui/WebAI2API.git
synced 2026-06-16 21:03:59 +08:00
fix: 修复自动登录时可能会出现的问题
This commit is contained in:
@@ -104,12 +104,29 @@ async function waitForInputWithAccountChooser(page, options = {}) {
|
||||
// 轮询等待输入框,同时处理账户选择
|
||||
const startTime = Date.now();
|
||||
while (Date.now() - startTime < timeout) {
|
||||
// 如果正在处理跳转,暂停检测输入框
|
||||
if (isHandlingAuth) {
|
||||
await sleep(500, 1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (await handleAccountChooser(page)) {
|
||||
// 处理了账户选择,重置等待
|
||||
continue;
|
||||
}
|
||||
|
||||
const inputHandle = await page.$(INPUT_SELECTOR);
|
||||
let inputHandle = null;
|
||||
try {
|
||||
inputHandle = await page.$(INPUT_SELECTOR);
|
||||
} catch (e) {
|
||||
// 忽略执行上下文销毁错误
|
||||
if (e.message.includes('Execution context was destroyed')) {
|
||||
inputHandle = null;
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (inputHandle) break;
|
||||
|
||||
await sleep(1000, 1500);
|
||||
|
||||
@@ -21,14 +21,13 @@ const INPUT_SELECTOR = '.tiptap.ProseMirror';
|
||||
// 入口 URL
|
||||
const TARGET_URL = 'https://zai.is/';
|
||||
|
||||
// 防止重复处理登录的锁
|
||||
let isHandlingAuth = false;
|
||||
|
||||
/**
|
||||
* 处理 Discord OAuth2 登录流程
|
||||
* @param {import('playwright-core').Page} page
|
||||
* @returns {Promise<boolean>} 是否处理了登录
|
||||
*/
|
||||
let isHandlingAuth = false;
|
||||
async function handleDiscordAuth(page) {
|
||||
// 防止重复处理
|
||||
if (isHandlingAuth) return false;
|
||||
@@ -126,11 +125,28 @@ async function waitForInputWithAuth(page, options = {}) {
|
||||
// 轮询等待输入框,同时处理登录
|
||||
const startTime = Date.now();
|
||||
while (Date.now() - startTime < timeout) {
|
||||
// 如果正在处理登录,暂停检测输入框,避免冲突
|
||||
if (isHandlingAuth) {
|
||||
await sleep(500, 1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (await handleDiscordAuth(page)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const inputHandle = await page.$(INPUT_SELECTOR);
|
||||
let inputHandle = null;
|
||||
try {
|
||||
inputHandle = await page.$(INPUT_SELECTOR);
|
||||
} catch (e) {
|
||||
// 忽略执行上下文销毁错误 (通常发生在页面刷新/跳转时)
|
||||
if (e.message.includes('Execution context was destroyed')) {
|
||||
inputHandle = null;
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (inputHandle) break;
|
||||
|
||||
await sleep(1000, 1500);
|
||||
|
||||
Reference in New Issue
Block a user