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

Discord OAuth与AWS Cognito用户池对接可行性及OpenID范围错误求助

解决Discord OAuth与AWS Cognito用户池对接的"invalid scope:openid"错误

你的问题核心在于Discord的OAuth服务不支持OpenID Connect协议的openid scope,因此用Cognito的OpenID Connect身份提供商配置是错误路径,应该改用Cognito的OAuth 2.0身份提供商类型对接。以下是完整的正确配置步骤:

1. 配置Discord开发者应用

  • 登录Discord Developer Portal,打开目标应用
  • 切换到OAuth2 > General页面:
    • 在Redirects中添加Cognito回调URL,格式为:https://<你的用户池域名>/oauth2/idpresponse
    • 记录页面上的Client ID和Client Secret,后续配置Cognito会用到

2. 在Cognito中添加Discord作为OAuth 2.0身份提供商

  • 打开AWS Cognito用户池控制台,进入身份提供商页面
  • 点击添加身份提供商,选择类型为OAuth 2.0,填写以下信息:
    • 提供商名称:自定义命名(例如Discord)
    • 客户端ID:填入Discord应用的Client ID
    • 客户端密钥:填入Discord应用的Client Secret
    • 授权端点:https://discord.com/api/oauth2/authorize
    • 令牌端点:https://discord.com/api/oauth2/token
    • 用户信息端点:https://discord.com/api/users/@me
    • 范围:填写Discord支持的scope,比如identify email(根据需求选择,绝对不要加入openid)
  • 配置属性映射:将Discord返回的用户字段映射到Cognito用户池属性,例如:
    • Cognito的email字段 → Discord返回的email
    • Cognito的username字段 → Discord返回的id或username

3. 更新Cognito应用客户端设置

  • 进入用户池的应用客户端页面,打开目标应用客户端:
    • 在身份验证流程中启用需要的授权模式(如授权码授予或隐式授予)
    • 在身份提供商列表中勾选刚才添加的Discord提供商
    • 确保回调URL与Discord应用中配置的完全一致

4. 测试登录流程

  • 访问Cognito登录URL(替换占位符为实际信息):
    https://<你的用户池域名>/login?client_id=<你的应用客户端ID>&response_type=code&scope=email&redirect_uri=<你的回调URL>
    
  • 页面跳转至Discord授权界面,完成授权后即可正常回到Cognito,完成用户创建或登录

关键注意事项

  • 绝对不要在配置中加入openid scope,这是报错的直接原因,Discord OAuth不支持该scope
  • 如果需要获取用户邮箱,必须在Discord应用的OAuth2 > Scopes中勾选email权限
  • 如需获取更多用户信息,参考Discord官方文档选择对应scope(如guilds),但始终避免openid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:25:27