Chrome扩展Google OAuth2报错:请求参数违反客户端安全限制
先对应你的场景梳理下:你已经在manifest.json里配置好OAuth2相关内容,background.js中使用的授权代码如下:
chrome.identity.getAuthToken({'interactive': true}, function (token) { if (chrome.runtime.lastError) { console.log(chrome.runtime.lastError.message); return; } console.log(token); });
昨日运行正常,今日突然抛出错误:
OAuth2 request failed: Service responded with error: 'request parameters violate OAuth2 client security restrictions'
这种突然出现的安全限制错误,大概率和配置变更或环境变化有关,我整理了几个常见的排查方向:
检查OAuth客户端ID的授权配置
打开Google Cloud Console找到你绑定的OAuth客户端ID,重点核对「已授权的JavaScript来源」和「已授权的重定向URI」:- JavaScript来源必须是
chrome-extension://[你的扩展ID]/格式 - 重定向URI一般是
https://[你的扩展ID].chromiumapp.org/
很可能是这些配置被误修改或删除了,导致请求的来源不在授权列表内,触发了安全限制。
- JavaScript来源必须是
确认扩展ID是否发生变化
如果你最近重新打包了扩展、切换了开发环境(比如从解压的开发版换成打包后的正式版),扩展ID会发生改变。而Google OAuth的授权配置是和特定扩展ID绑定的,ID变了自然会触发安全校验失败。
你可以在chrome://extensions/页面查看当前扩展的ID,然后同步更新Google Cloud Console里的授权项。排查OAuth consent screen的状态
如果你的应用处于「测试」状态,Google会限制只有添加到测试用户列表里的账号才能完成授权。如果当前登录的Google账号不在测试列表中,也会触发这类安全错误。去Google Cloud Console的OAuth consent screen页面确认测试用户列表是否包含你当前使用的账号。清除缓存并重新加载扩展
浏览器缓存的旧授权会话可能已经失效或损坏,尝试清除Chrome中与该扩展相关的站点数据,或者在扩展管理页面点击「重新加载」按钮,然后再次发起授权请求。
内容的提问来源于stack exchange,提问作者Dmitry

