使用expo-auth-session实现Twitter认证时JSON解析错误原因排查
React Native + Expo Auth Session 推特认证JSON解析错误解决
错误原因
你碰到的SyntaxError: JSON Parse error: Unexpected character: <,本质是请求令牌的接口返回了HTML页面(不是预期的JSON响应),导致库无法解析。核心问题是Twitter OAuth2的tokenEndpoint地址写错了。
你的代码里discovery中的tokenEndpoint用了"https://twitter.com/2/oauth2/token",这个地址会指向Twitter的网页端,返回的是HTML;而正确的令牌端点必须带api前缀。
修复方案
1. 修正tokenEndpoint地址
把discovery对象里的tokenEndpoint改成正确的API地址:
const discovery = { authorizationEndpoint: "https://twitter.com/i/oauth2/authorize", tokenEndpoint: "https://api.twitter.com/2/oauth2/token", // 补上api前缀 revocationEndpoint: "https://twitter.com/i/oauth2/revoke", };
2. 额外验证项
- 确认
redirectUri里的scheme已经在Twitter开发者后台的「OAuth 2.0设置」中添加为合法回调URL - 检查
clientId和clientSecret是从Twitter开发者平台获取的有效凭证 - 确保你申请的
scopes权限已经在开发者后台启用
为什么会出现这个错误?
当请求错误的token端点时,Twitter返回的是HTML页面(比如404页面或登录跳转页),expo-auth-session库默认会把响应当成JSON解析,而HTML的开头是<,完全不符合JSON格式,自然就触发了解析错误。
内容的提问来源于stack exchange,提问作者Ika
相关产品推荐
相关产品推荐

