You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google OAuth2 Java API如何在回调/重定向URI中设置state参数

错误原因

你之前的写法错误原因是将state参数作为查询参数附加到了redirect_uri中,不符合Google OAuth2的校验规则:

  • redirect_uri必须和你在Google Cloud后台配置的回调地址完全一致,不能额外添加预留的OAuth参数
  • state是授权请求的独立顶层参数,不属于redirect_uri的组成部分,因此Google会返回对应的400错误。

正确实现方案

无需修改getRedirectUri方法,保持原有返回纯回调地址的逻辑即可,额外覆写AbstractAuthorizationCodeServlet的newAuthorizationCodeRequestUrl方法,在该方法中设置state参数:

@Override
protected AuthorizationCodeRequestUrl newAuthorizationCodeRequestUrl(
    HttpServletRequest req, HttpServletResponse resp, String redirectUri)
    throws ServletException, IOException {
  // 调用父类方法获取基础授权请求URL对象
  AuthorizationCodeRequestUrl url = super.newAuthorizationCodeRequestUrl(req, resp, redirectUri);
  // 在此处设置自定义的state参数值
  url.setState("myspecialname");
  return url;
}

该方法生成的是发往Google的授权请求的基础URL,在此处设置的state会作为顶层参数追加到授权请求URL中,和官方给出的示例格式完全匹配,即可正常通过校验,回调时state参数也会正常回传给你的服务端。


内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:06:05