/** * alexa-api/auth.js * ローカル PC で実行して Amazon Cookie を取得するスクリプト。 * * 使い方: * cd alexa-api * npm install alexa-cookie2 * node auth.js * * → ブラウザで http://localhost:3456 を開く * → Amazon にログイン * → コンソールに Cookie が表示される * → その値を Windmill Variable "u/admin/ALEXA_COOKIE" に登録 */ const AlexaCookie = require('alexa-cookie2'); const PROXY_PORT = 3456; console.log('=============================================='); console.log(' Alexa Cookie 取得ツール'); console.log('=============================================='); console.log(`\n認証プロキシを起動中... (port ${PROXY_PORT})`); console.log('\n【手順】'); console.log(` 1. ブラウザで http://localhost:${PROXY_PORT} を開く`); console.log(' 2. Amazon アカウントにログイン(amazon.co.jp)'); console.log(' 3. ログイン完了後、このコンソールに Cookie が表示される\n'); AlexaCookie.generateAlexaCookie( '', { amazonPage: 'amazon.co.jp', acceptLanguage: 'ja-JP', setupProxy: true, proxyPort: PROXY_PORT, proxyOwnIp: '127.0.0.1', proxyListenBind: '0.0.0.0', logger: (msg) => { if (!msg.includes('verbose') && !msg.includes('DEBUG')) { console.log('[auth]', msg); } }, }, (err, cookie) => { // alexa-cookie2 はブラウザを開くよう促すメッセージも err として渡してくる if (err) { const msg = err.message || String(err); if (msg.includes('Please open')) { // これは実際のエラーではなく「ブラウザで開いて」という指示 console.log('\n>>> ブラウザで http://localhost:3456/ を開いて Amazon にログインしてください <<<\n'); // プロキシを生かしたまま待機(process.exit しない) return; } console.error('\n[ERROR] 認証失敗:', msg); process.exit(1); } console.log('\n=============================================='); console.log(' Cookie 取得成功!'); console.log('=============================================='); console.log('\n以下の値を Windmill Variable に登録してください:'); console.log(' パス: u/admin/ALEXA_COOKIE'); console.log(' Secret: ON(チェックを入れる)'); console.log('\n--- Cookie ---'); console.log(cookie); console.log('--- ここまで ---\n'); process.exit(0); } );