迁移至Google Identity Services后后台登录报错:Origin不匹配Client ID
问题成因分析
前后端请求的实际Origin不一致
前端是浏览器发起请求,Origin是你前端的域名(比如http://localhost:3000),但后台是服务器端发起认证请求,它的请求Origin是服务器自身的地址(比如http://localhost:8080,甚至可能是无域名的内部请求)。如果Google OAuth客户端ID的配置里只添加了前端的Origin,未将后台服务的来源纳入授权范围,后台请求就会被拦截报错。Google OAuth客户端ID的配置规则更严格
旧的Google Sign-In库对服务器端请求的Origin校验相对宽松,但GIS的校验更规范。如果后台使用的是前端的Web类型客户端ID,需要在Google Cloud控制台的客户端ID配置中,把后台服务的域名/IP添加到已获授权的JavaScript来源;若后台是纯服务端认证流程,可能需要使用"其他"类型的客户端ID,而非Web应用的ID。后台采用了不匹配的认证流程
前端使用的是GIS的客户端侧流程(比如带PKCE的授权码流程),但后台直接拿前端的Web客户端ID发起服务端请求时,GIS会严格校验请求来源。后台应当使用专门的服务端客户端ID,或者确保后台的请求来源已被添加到Google的授权列表中。配置缓存未同步
若你刚在Google Cloud控制台更新了配置,可能存在缓存未生效的情况,导致后台请求仍按照旧的校验规则执行。这种情况只需等待几分钟,或者重启后台服务即可。
内容的提问来源于stack exchange,提问作者FE-P
相关产品推荐
相关产品推荐

