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

使用Authlib与OAuth2认证Twitter API 2.0时出现Error code 215问题

解决Twitter OAuth2.0授权报错「Bad Authentication data (215)」

以下是针对问题的具体排查和修复方案:

核心问题:授权端点错误

你当前使用的授权地址 https://api.twitter.com/2/oauth2/authorize 是错误的,Twitter OAuth2.0的用户授权页面端点应为 https://twitter.com/i/oauth2/authorize,api.twitter.com 下的地址仅用于交换令牌,而非用户授权跳转的入口——这是导致215错误的最可能原因。

修正后的完整代码示例

1. 初始化OAuth2Session与生成授权URL

from authlib.integrations.flask_client import OAuth2Session

# 正确的授权端点和令牌端点
authorization_url = 'https://twitter.com/i/oauth2/authorize'
token_url = 'https://api.twitter.com/2/oauth2/token'

# 配置参数
client_id = '你的Client ID'
client_secret = '你的Client Secret'
scopes = ['tweet.read', 'tweet.write', 'users.read']
scope = ' '.join(scopes)
callback_uri = 'http://127.0.0.1:5000/oauth/callback'

# 授权码流程的授权阶段不需要传入client_secret
client = OAuth2Session(client_id, scope=scope, redirect_uri=callback_uri)

# 生成授权URL
auth_url, state = client.create_authorization_url(authorization_url)
print(f"授权URL: {auth_url}")

2. Flask回调路由实现

from flask import Flask, request

app = Flask(__name__)

@app.route("/oauth/callback", methods=["GET"])
def callback():
    # 交换令牌时才需要传入client_secret
    token = client.fetch_token(
        token_url,
        client_secret=client_secret,
        authorization_response=request.url
    )
    # 验证令牌有效性或执行后续逻辑
    print(f"获取到的令牌: {token}")
    return "授权成功"

if __name__ == "__main__":
    app.run(debug=True)

关键配置检查项

  • 回调URI精确匹配:确保Twitter开发者平台中配置的回调URI与代码中的 callback_uri 完全一致,包括协议(http/https)、主机(127.0.0.1不能换成localhost)、端口、路径,任何细微差异都会导致认证失败。
  • OAuth2.0流程启用:在Twitter Developer Portal的「Authentication Settings」中,开启OAuth 2.0并启用「Authorization Code Flow with PKCE」(Authlib默认支持PKCE,Twitter强制要求该流程)。
  • 权限范围配置:在「Authentication Settings」的「Scopes」部分,勾选你需要的权限(tweet.read、tweet.write、users.read),保存后等待配置生效。
  • Client ID正确性:确认复制的Client ID是完整的字符串,没有遗漏或多余字符,重新生成后务必完整复制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:25:33