Flutter应用网页跳转触发Google授权错误,如何合规?
问题描述
刚发布首个Flutter应用,内置网页跳转按钮,部分用户反馈触发「Access Blocked: authorisation error」错误(错误截图:
)。本人使用DuckDuckGo默认浏览器测试无此问题,查阅Google安全浏览器政策未找到明确解决方案,当前跳转代码如下:
_launchURL() async { const url = 'https://www.thiswebsite.com'; final uri = Uri.parse(url); if (await canLaunchUrl(uri)) { await launchUrl(uri); } else { throw 'Could not launch $url'; } }
请问如何让应用符合政策?是否需改为打开外部浏览器跳转?
解决方案
强制使用外部浏览器跳转
当前代码默认可能采用应用内WebView或系统浏览器内嵌模式,这种环境会触发Google的安全验证拦截(尤其目标网站包含OAuth、登录授权逻辑时)。修改代码指定外部浏览器打开,脱离内嵌环境即可规避限制:_launchURL() async { const url = 'https://www.thiswebsite.com'; final uri = Uri.parse(url); if (await canLaunchUrl(uri)) { // 强制唤起外部浏览器 await launchUrl(uri, mode: LaunchMode.externalApplication); } else { throw 'Could not launch $url'; } }LaunchMode.externalApplication会直接调用用户设备上的默认外部浏览器,完全脱离应用内嵌环境,基本能解决授权拦截问题。检查目标网站安全配置
如果目标网站是你自己的站点,需要确认:- 网站的OAuth/登录授权是否限制了内嵌WebView的访问(多数服务会阻止非标准浏览器环境的授权请求)
- 是否在网站安全设置中添加了你的Flutter应用标识(如包名、签名哈希),允许应用内嵌访问
多浏览器兼容性测试
测试时不要只局限于DuckDuckGo,务必用Chrome(对WebView安全限制最严格)验证跳转场景,提前排查兼容性问题。
内容的提问来源于stack exchange,提问作者Nomad09
相关产品推荐
相关产品推荐

