fix: fall back to manual login when epic device code api fails
This commit is contained in:
parent
051363ed5f
commit
5c7a945be0
2 changed files with 17 additions and 6 deletions
|
|
@ -67,6 +67,7 @@ Common options:
|
||||||
- `TIMEOUT`, `LOGIN_TIMEOUT` (seconds)
|
- `TIMEOUT`, `LOGIN_TIMEOUT` (seconds)
|
||||||
- Epic: `EG_MODE=legacy|new` (legacy Playwright flow or neuer API-getriebener Claimer), `EG_PARENTALPIN`, `EG_EMAIL`, `EG_PASSWORD`, `EG_OTPKEY`
|
- Epic: `EG_MODE=legacy|new` (legacy Playwright flow or neuer API-getriebener Claimer), `EG_PARENTALPIN`, `EG_EMAIL`, `EG_PASSWORD`, `EG_OTPKEY`
|
||||||
- Epic (new mode): Cookies werden unter `data/browser/epic-cookies.json` persistiert; OAuth Device Code Flow benötigt ggf. einmalige Freigabe im Browser.
|
- Epic (new mode): Cookies werden unter `data/browser/epic-cookies.json` persistiert; OAuth Device Code Flow benötigt ggf. einmalige Freigabe im Browser.
|
||||||
|
- Falls Device-Code-Endpunkt nicht erreichbar ist (404/Bad Request), fällt der neue Modus automatisch auf manuellen Browser-Login zurück.
|
||||||
- Login: `EMAIL`, `PASSWORD` global; per store `EG_EMAIL`, `EG_PASSWORD`, `EG_OTPKEY`, `PG_EMAIL`, `PG_PASSWORD`, `PG_OTPKEY`, `GOG_EMAIL`, `GOG_PASSWORD`
|
- Login: `EMAIL`, `PASSWORD` global; per store `EG_EMAIL`, `EG_PASSWORD`, `EG_OTPKEY`, `PG_EMAIL`, `PG_PASSWORD`, `PG_OTPKEY`, `GOG_EMAIL`, `GOG_PASSWORD`
|
||||||
- Prime Gaming: `PG_REDEEM=1` (auto-redeem keys, experimental), `PG_CLAIMDLC=1`, `PG_TIMELEFT=<days>` to skip long-remaining offers
|
- Prime Gaming: `PG_REDEEM=1` (auto-redeem keys, experimental), `PG_CLAIMDLC=1`, `PG_TIMELEFT=<days>` to skip long-remaining offers
|
||||||
- Screenshots: `SCREENSHOTS_DIR` (default `data/screenshots`)
|
- Screenshots: `SCREENSHOTS_DIR` (default `data/screenshots`)
|
||||||
|
|
|
||||||
|
|
@ -80,10 +80,16 @@ const getValidAuth = async ({ otpKey, reuseCookies, cookiesPath }) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('🔐 Starting fresh OAuth device flow (manual approval required)...');
|
console.log('🔐 Starting fresh OAuth device flow (manual approval required)...');
|
||||||
const deviceResponse = await axios.post('https://api.epicgames.dev/epic/oauth/deviceCode', {
|
let deviceResponse;
|
||||||
client_id: '34a02cf8f4414e29b159cdd02e6184bd',
|
try {
|
||||||
scope: 'account.basicprofile account.userentitlements',
|
deviceResponse = await axios.post('https://api.epicgames.dev/epic/oauth/deviceCode', {
|
||||||
});
|
client_id: '34a02cf8f4414e29b159cdd02e6184bd',
|
||||||
|
scope: 'account.basicprofile account.userentitlements',
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Device code flow failed (fallback to manual login):', e.response?.status || e.message);
|
||||||
|
return { bearerToken: null, cookies: [] };
|
||||||
|
}
|
||||||
const { device_code, user_code, verification_uri_complete } = deviceResponse.data;
|
const { device_code, user_code, verification_uri_complete } = deviceResponse.data;
|
||||||
console.log(`📱 Open: ${verification_uri_complete}`);
|
console.log(`📱 Open: ${verification_uri_complete}`);
|
||||||
console.log(`💳 Code: ${user_code}`);
|
console.log(`💳 Code: ${user_code}`);
|
||||||
|
|
@ -258,8 +264,12 @@ export const claimEpicGamesNew = async () => {
|
||||||
cookiesPath: COOKIES_PATH,
|
cookiesPath: COOKIES_PATH,
|
||||||
});
|
});
|
||||||
|
|
||||||
await context.addCookies(auth.cookies);
|
if (auth.cookies?.length) {
|
||||||
console.log('✅ Cookies loaded:', auth.cookies.length);
|
await context.addCookies(auth.cookies);
|
||||||
|
console.log('✅ Cookies loaded:', auth.cookies.length);
|
||||||
|
} else {
|
||||||
|
console.log('⚠️ No cookies loaded; using manual login via browser.');
|
||||||
|
}
|
||||||
|
|
||||||
await page.goto(URL_CLAIM, { waitUntil: 'domcontentloaded' });
|
await page.goto(URL_CLAIM, { waitUntil: 'domcontentloaded' });
|
||||||
user = await ensureLoggedIn(page, context);
|
user = await ensureLoggedIn(page, context);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue