You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Expo实现Twitter OAuth2认证时,令牌兑换环节报错求助

React-Native/Expo 中 Twitter OAuth2 令牌兑换失败问题

场景说明

我在React-Native/Expo应用中,基于expo-auth-session包实现Twitter OAuth2认证(参考Expo官方Twitter OAuth指南)。认证流程分为两步:

  • 第一步:用户授权应用访问账户,成功获取授权码
  • 第二步:使用授权码兑换访问令牌,此步骤出现问题

代码示例

调用exchangeCodeAsync兑换令牌的代码如下:

exchangeCodeAsync({
    clientId: '<CLIENT_ID>',
    redirectUri: makeRedirectUri({
        scheme: 'my.app',
        useProxy
    }),
    code: response.params.code,
    extraParams: {
        client_id: "<CLIENT_ID>",
        code_verifier: request?.codeVerifier || '',
        redirect_uri: makeRedirectUri({
            scheme: 'my.app',
            useProxy
        }),
        grant_type: "authorization_code",
    },
}, discovery)

错误信息

触发以下未处理的Promise拒绝错误:

Possible Unhandled Promise Rejection (id: 0):
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

问题排查现状

该错误表明exchangeCodeAsync请求Twitter的/oauth2/token接口时,返回的不是预期的JSON响应,而是HTML错误页面,页面提示内容为:

Something went wrong, but don’t fret — let’s give it another shot.

已确认以下内容无问题:

  • 授权流程正常,成功获取到授权码
  • redirect_uri配置正确
  • code_verifier和授权码code的格式符合Twitter官方文档要求

完整App.js配置已在Expo Snack中完成配置(app.json内已设置自定义scheme)


内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:15:36