Flutter安卓端Coinbase OAuth2登录遭遇Chrome URI拦截问题求助
Flutter集成Coinbase OAuth2安卓端认证卡住解决方案
问题根因
安卓移动端Chrome的混合内容安全策略限制导致:Coinbase的OAuth授权页运行在HTTPS安全环境下,你配置的重定向URI为自定义Scheme格式my.myapp.app://myapp-oauth,Chrome会将非HTTPS开头的跳转目标判定为不安全端点,直接拦截跳转操作,不会触发应用的回调接收逻辑,因此页面卡在处理状态。Firefox移动端无该严格限制,因此可以正常运行。
可落地解决方案
- 方案1:替换重定向URI为HTTPS格式
将Coinbase后台配置的重定向URI从自定义Scheme改为HTTPS开头的地址,例如https://my.myapp.app/oauth/callback,安卓端对应配置App Links关联该域名与你的应用,iOS端配置Universal Links匹配该地址,即可避开Chrome的安全拦截,跳转可正常触发。 - 方案2:调整flutter_web_auth安卓端调用逻辑
修改安卓端集成代码,强制使用Custom Tabs模式打开授权页,Custom Tabs的跳转规则与普通系统浏览器不同,不会拦截合法的应用自定义Scheme跳转。 - 方案3:完善安卓清单文件配置
在android/app/src/main/AndroidManifest.xml中添加queries声明,明确告知系统你的应用需要接收对应自定义Scheme的回调:
<queries> <intent> <action android:name="android.intent.action.VIEW" /> <data android:scheme="my.myapp.app" /> </intent> </queries>
同时确认接收OAuth回调的Activity的intent-filter配置正确:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="my.myapp.app" android:host="myapp-oauth" /> </intent-filter>
注意:如果选择保留自定义Scheme方案,需要确认Coinbase后台的OAuth重定向URI配置与代码中传入的redirect_uri完全一致,末尾是否带斜杠、大小写都要完全匹配,否则也会出现跳转失败问题。
内容的提问来源于stack exchange,提问作者cloudCharm
相关产品推荐
相关产品推荐

