如何检查Twitch主播是否在线?为何出现OAuth令牌缺失401错误?
问题原因及修复方案
你的代码存在两个关键问题,导致Twitch API返回"OAuth token is missing"错误:
1. Authorization请求头格式错误
Twitch Helix API要求Authorization头的值必须以Bearer 作为前缀,正确格式为:
"Authorization": "Bearer YOUR_OAUTH_TOKEN"
你直接填写了令牌字符串,缺少Bearer 前缀,导致API无法识别这是有效的OAuth令牌。
2. Fetch调用的参数格式错误
fetch函数的第二个参数需要是配置对象,headers是该对象的属性之一。你直接将headers对象作为第二个参数传入,不符合fetch的调用规范,会导致请求头未被正确设置。
修正后的代码:
async function isStreamerLive(username) { const theUrl = `https://api.twitch.tv/helix/streams?user_login=${username}`; const headers = { "Client-Id": 'YOUR_CLIENT_ID', // 替换为你的Client ID "Authorization": 'Bearer YOUR_OAUTH_TOKEN', // 加上Bearer前缀 }; // 第二个参数传入包含headers的配置对象 const response = await fetch(theUrl, { headers }); const data = await response.json(); console.log(data); return data?.data?.find(s => s.user_login === username.toLowerCase()); } let username = 'kaicenat'; isStreamerLive(username);
额外提示:
- 确保你的OAuth令牌有效,且拥有访问
streams端点的权限 - 处理英文用户名时,
toLowerCase()比toLocaleLowerCase()更简洁,效果一致
内容的提问来源于stack exchange,提问作者Ansh Tyagi
相关产品推荐
相关产品推荐

