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

iOS 16设备Google认证出现invalid_grant错误求助

解决iOS 16下OAuth2库实现YouTube上传出现的"invalid_grant"错误

以下是针对你遇到的iOS 16设备上invalid_grant(Bad Request)错误的具体排查和修复方案:

1. 调整Keychain访问权限配置

iOS 16对Keychain的访问权限管控更为严格,当前配置的kSecAttrAccessibleAfterFirstUnlock可能导致令牌存储/读取异常。建议将其替换为kSecAttrAccessibleWhenUnlocked,确保应用在解锁状态下能正常访问Keychain中的OAuth令牌:

修改代码中的keychain_access_mode配置:

self.oauth2 = OAuth2CodeGrant(settings: [
    "client_id": "XXXXX",
    "authorize_uri": "https://accounts.google.com/o/oauth2/v2/auth",
    "token_uri": "https://www.googleapis.com/oauth2/v4/token",
    "redirect_uris": ["XXXX"],
    "scope": "https://www.googleapis.com/auth/youtube.upload",
    "use_keychain": true,
    "keychain_access_mode": kSecAttrAccessibleWhenUnlocked,
    "keychain_account_for_tokens": "XXXXXX"
] as OAuth2JSON)

2. 清理旧令牌并重新授权

iOS 16可能对旧版本存储的OAuth令牌兼容性不佳,先彻底清除应用存储的旧令牌:

  • 卸载应用后重新安装,或者在代码中调用oauth2.forgetTokens()方法清理令牌,然后重新发起授权流程。

3. 验证Redirect URI的一致性

确保Google Cloud Console中配置的Redirect URI与代码中的redirect_uris完全一致,包括协议、域名/URL Scheme的大小写。同时检查Info.plist中是否正确配置了对应的CFBundleURLTypes(用于处理授权回调),iOS 16对URL Scheme的校验更为严格,任何不匹配都会导致授权流程异常。

4. 开启调试日志定位细节

在OAuth2配置中添加verbose: true,开启详细日志输出,查看令牌请求阶段的具体错误信息,比如授权码交换令牌时的响应细节,这能帮助你精准定位问题:

self.oauth2 = OAuth2CodeGrant(settings: [
    // 其他配置项不变
    "verbose": true
] as OAuth2JSON)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:20:59