iOS Swift集成Discord OAuth2遇重定向URI不支持问题求助
排查iOS Swift集成Discord OAuth2重定向URI错误的步骤
1. 严格对齐重定向URI的所有配置
- 确保Discord开发者门户里的重定向URI和Xcode、OAuth请求里的完全一致,包括大小写、路径、特殊字符。比如你定义的Scheme是
myappdiscord,重定向URI必须写成myappdiscord://callback这类完整格式,不能只填myappdiscord://或者漏写路径。 - 注意:Discord不接受不完整的URI,门户里添加的每一条重定向URI都要和实际请求的参数完全匹配。
2. 验证Xcode的URL Scheme配置
- 打开
Info.plist,检查CFBundleURLTypes数组的配置,确保CFBundleURLSchemes里的Scheme没有多余空格、拼写错误,示例配置如下:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>myuniquediscordscheme</string> </array> <key>CFBundleURLName</key> <string>com.yourcompany.yourapp</string> </dict> </array> - 排查是否有其他URL Type使用了同一个Scheme,导致系统无法正确识别回调目标。
3. 核对OAuth2请求参数
- 用Discord OAuth2 Generator生成链接时,
redirect_uri参数必须和门户里添加的完全一致,不能有任何差异。 - 确认请求的
scope参数明确包含identify,格式为scope=identify,没有拼写错误。
4. 检查ASWebAuthenticationSession初始化
- 初始化会话时,
callbackURLScheme只需要填Scheme本身,不能带路径。比如:let authURL = URL(string: "你的Discord认证链接")! let session = ASWebAuthenticationSession(url: authURL, callbackURLScheme: "myuniquediscordscheme") { callbackURL, error in // 处理回调逻辑 } session.start() - 这里如果填了完整的URI(比如
myuniquediscordscheme://callback),会导致回调匹配失败。
5. 清理缓存后重新测试
- 卸载设备/模拟器上的App,执行Xcode的
Product > Clean Build Folder清理编译缓存,重新编译安装。 - 先在Discord门户移除旧的重定向URI,保存后再重新添加正确的,等待几分钟再发起认证请求,避免Discord缓存旧配置。
6. 检查Discord应用状态
- 确认应用在Discord门户的OAuth2设置里是正常状态,公开应用请勾选对应选项,私有应用需确保授权用户在允许范围内。
- 检查门户的
OAuth2 > Redirects列表,确认正确的重定向URI已添加并保存。
内容的提问来源于stack exchange,提问作者Ahmed Zaidan
相关产品推荐
相关产品推荐

