import { SpApiClient } from './src/client.ts'; import { SpApiConfig } from './src/types.ts'; const config: SpApiConfig = { clientId: process.env.AMAZON_LWA_CLIENT_ID || '', clientSecret: process.env.AMAZON_LWA_CLIENT_SECRET || '', refreshToken: process.env.AMAZON_REFRESH_TOKEN || '', region: 'us-east-1' }; if (!config.clientId || !config.clientSecret || !config.refreshToken) { throw new Error('Set AMAZON_LWA_CLIENT_ID, AMAZON_LWA_CLIENT_SECRET and AMAZON_REFRESH_TOKEN'); } console.log('Initializing SP-API Client with environment credentials'); const client = new SpApiClient(config); async function testAuth() { try { console.log('Attempting to fetch Access Token...'); // 通过访问私有方法或者触发请求来测试 // 由于 getAccessToken 是私有的,我们通过 request 方法触发它 // 我们故意请求一个不存在的端点,如果能走到 404,说明 Auth 成功了 // 如果是 400/401 且来自 Amazon Auth Server,说明 Auth 失败 const response = await client.request({ method: 'GET', path: '/orders/v0/orders', query: { MarketplaceIds: ['ATVPDKIKX0DER'], // getOrders expects MarketplaceIds as a list CreatedAfter: '2023-10-01T00:00:00Z' } }); console.log('Response:', JSON.stringify(response, null, 2)); console.log('Request executed successfully.'); } catch (error: any) { console.log('Test finished with error.'); if (error.response) { console.log('HTTP Status:', error.response.status); console.log('Response Data:', JSON.stringify(error.response.data, null, 2)); // 分析错误来源 if (error.config && error.config.url && error.config.url.includes('api.amazon.com/auth/o2/token')) { console.error('❌ LWA Authentication Failed: Unable to get Access Token.'); } else if (error.response.status === 403) { console.log('✅ Access Token acquired successfully! (But API request forbidden/invalid as expected with dummy creds)'); } else if (error.response.status === 404) { console.log('✅ Access Token acquired successfully! (API endpoint not found)'); } else if (error.response.status === 401) { console.log('❌ API Unauthorized: Access Token might be invalid or expired immediately.'); } else { // 如果是我们预期的 token 请求错误 if (error.message.includes('refresh_token')) { console.error('❌ LWA Token Error:', error.message); } } } else { console.error('Error Message:', error.message); } } } testAuth();