Android WebView中Google登录报错Error 403: disallowed_useragent如何解决

报错原因
Google的身份验证服务禁止嵌入式WebView环境发起登录请求,目的是避免账号密码被恶意劫持、防范钓鱼风险。Android系统自带的WebView默认User-Agent中包含wv标识,会被Google服务直接识别为不受信任的嵌入式环境,触发Error 403: disallowed_useragent拦截。
解决方案
- 方案1(优先推荐):使用Android官方Google Identity Services SDK实现登录
完全避开WebView环境限制,走系统级认证流程,符合Google安全规范,兼容性和安全性最高,是Google官方唯一推荐的移动端Google登录实现方式。 - 方案2(临时兼容,不推荐长期使用):修改WebView的User-Agent移除WebView标识
调整WebView配置,抹去默认UA中的WebView专属标识字段,绕过Google的环境识别,示例代码如下:
注意:该方案仅为临时兼容方案,违反Google服务条款,后续Google更新识别规则后随时可能失效。WebSettings webSettings = webView.getSettings(); // 开启JavaScript支持(Google登录需要) webSettings.setJavaScriptEnabled(true); String originUA = webSettings.getUserAgentString(); // 移除UA中标识WebView的wv字段 String modifiedUA = originUA.replaceAll("\\s*wv\\)", ")"); webSettings.setUserAgentString(modifiedUA); - 方案3:跳转外部浏览器完成认证
如果Web加载场景不可替换,可将Google登录流程跳转至系统默认浏览器完成,认证通过后通过DeepLink跳转回App,该方案也符合Google的安全要求,不存在被拦截的风险。
内容的提问来源于stack exchange,提问作者Champak Gada
相关产品推荐
相关产品推荐

