{"record":{"id":"8041245887af92b4","repo":"jackwener/OpenCLI","slug":"amazon-review-discussion-requires-an-active-signed","errorCode":null,"errorMessage":"Amazon review discussion requires an active signed-in Amazon session in the shared Chrome profile.","messagePattern":"Amazon review discussion requires an active signed-in Amazon session in the shared Chrome profile\\.","errorType":"exception","errorClass":"AuthRequiredError","httpStatus":null,"severity":"error","filePath":"clis/amazon/discussion.js","lineNumber":74,"sourceCode":"        body: card.querySelector('[data-hook=\"review-body\"]')?.textContent || '',\n        verified: !!card.querySelector('[data-hook=\"avp-badge\"]'),\n      })),\n    }))()\n  `);\n}\nasync function readDiscussionPayload(page, input, limit) {\n    const reviewUrl = buildDiscussionUrl(input);\n    const reviewState = await gotoAndReadState(page, reviewUrl, 2500, 'discussion');\n    assertUsableState(reviewState, 'discussion');\n    const reviewPayload = await readCurrentDiscussionPayload(page, limit);\n    if (hasDiscussionSummary(reviewPayload)) {\n        return reviewPayload;\n    }\n    const productUrl = buildProductUrl(input);\n    const productState = await gotoAndReadState(page, productUrl, 2500, 'discussion');\n    assertUsableState(productState, 'discussion');\n    if (isSignInState(reviewState) && isSignInState(productState)) {\n        throw new AuthRequiredError(amazonHostFromInput(input) ?? DOMAIN, 'Amazon review discussion requires an active signed-in Amazon session in the shared Chrome profile.');\n    }\n    const productPayload = await readCurrentDiscussionPayload(page, limit);\n    if (hasDiscussionSummary(productPayload)) {\n        return productPayload;\n    }\n    if (isSignInState(reviewState)) {\n        throw new CommandExecutionError('amazon review page redirected to sign-in and product page fallback did not expose review summary', 'Open the product page in Chrome, verify reviews are visible, and retry.');\n    }\n    return reviewPayload;\n}\ncli({\n    site: 'amazon',\n    name: 'discussion',\n    access: 'read',\n    description: 'Amazon review summary and sample customer discussion from product review pages',\n    domain: 'amazon.com',\n    strategy: Strategy.COOKIE,\n    navigateBefore: false,","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/amazon/discussion.js#L56-L92","documentation":"AuthRequiredError thrown by readDiscussionPayload when BOTH the product review page and the product page fallback land on Amazon's sign-in page (/ap/signin or 'Amazon Sign-In' title). This means the shared Chrome profile has no usable Amazon session, so review content cannot be read anonymously. The library distinguishes this from a layout change by detecting the sign-in redirect on both attempts.","triggerScenarios":"Running the amazon discussion command (payload) for an ASIN/URL where gotoAndReadState on the review URL and on the product URL both return isSignInState true — Amazon redirected both requests to /ap/signin because the session is missing or expired.","commonSituations":"Expired Amazon session in the shared Chrome profile; running before ever logging in; Amazon increasingly gating review pages behind sign-in; cookies cleared between runs; IP/region triggering forced sign-in walls.","solutions":["Sign in to amazon.com in the shared Chrome profile (or run the amazon auth login flow) and retry the discussion command","Verify session health with the amazon auth status/verify command before scraping","Open the product reviews page in Chrome manually and confirm reviews render signed-in","If sessions keep expiring, avoid cookie-clearing settings and re-login periodically"],"exampleFix":"// before\ndiscussion = await opencli.call('amazon discussion', { input: 'B0FJS72893' });\n// throws AuthRequiredError\n\n// after\nconst auth = await opencli.call('amazon auth status');\nif (!auth.logged_in) await opencli.call('amazon auth login');\ndiscussion = await opencli.call('amazon discussion', { input: 'B0FJS72893' });","handlingStrategy":"try-catch","validationCode":"const auth = await opencli.call('amazon auth status');\nif (!auth.logged_in) await opencli.call('amazon auth login');","typeGuard":null,"tryCatchPattern":"try {\n  return await opencli.call('amazon discussion', { input: asin });\n} catch (e) {\n  if (e.name === 'AuthRequiredError' && /signed-in Amazon session/.test(e.message)) {\n    await opencli.call('amazon auth login');\n    return opencli.call('amazon discussion', { input: asin });\n  }\n  throw e;\n}","preventionTips":["Run amazon auth status/verify before discussion scraping","Refresh the Amazon session periodically; review pages are heavily login-gated","Avoid cookie purging between runs in the shared profile"],"tags":["authentication","amazon","sign-in-redirect","scraping"],"backgroundTag":"missing-auth-session-cookie","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}