Java 在google Oauth2.0中处理请求参数

Java 在google Oauth2.0中处理请求参数,java,servlets,oauth-2.0,Java,Servlets,Oauth 2.0,我试图在java web应用程序中使用Google OAuth2.0身份验证机制。然而,我有一些基本的挑战,我在这里寻求帮助- 我已经在GoogleAPI控制台中注册了我的应用程序,并将登录url重定向到我的localhost应用程序以用于开发目的。在用户验证应用程序之后,我试图在servlet中处理google提供的访问令牌,但是,我看到的url来自google,如下所示- http://local host:8080//loginProcess#access#u token=ya29.AH

我试图在java web应用程序中使用Google OAuth2.0身份验证机制。然而,我有一些基本的挑战,我在这里寻求帮助-

我已经在GoogleAPI控制台中注册了我的应用程序,并将登录url重定向到我的localhost应用程序以用于开发目的。在用户验证应用程序之后,我试图在servlet中处理google提供的访问令牌,但是,我看到的url来自google,如下所示-

http://local host:8080//loginProcess#access#u token=ya29.AHS6ZQBN-4Snrj6P9i4xPxbCxLLkmbPf3Jc2Dj7eUA72FWIy4&token_type=Bearer&expires_in=3600
servlet名称为“loginProcess”,请注意#在它之后-由于请求参数中包含哈希,我无法使用request.getParameter(“access_token”)在java servlet中检索它们

我希望我的问题是清楚的,如果没有,请让我知道我遗漏的细节


提前谢谢大家

这是客户端应用程序(在浏览器中运行的JavaScript)的正常行为。我不知道这是否是您的实际场景,如果是的话,为了处理响应,javascript是您唯一的选择,从


如果没有,您可能需要将授权请求(场景)更改为,在这种情况下,您可以使用
request.getParameter(“access\u token”)
处理响应,这种授权的重要参数是
response\u type=code



此外,从安全角度来看,客户端(Web浏览器)在检索文档时不应该向服务器发送URI片段,例如。片段标识符的功能与URI的其他部分不同:即,它的处理完全是客户端的,没有服务器的参与。

在登录过程之后,它应该是问号(?)而不是#,因此您可以将该值作为请求参数检索。这绝对正确!但是,这就是我从谷歌得到的。所以,我的问题是-我应该如何解析以“#”而不是“?”开头的请求参数?您可以在这里做一件事。这只是一个调整。尝试获取它的请求URL,如下面所示。request.getRequestURL().toString()。并根据它们的存在情况检查第一次出现的“#”或“?”,您可以检索令牌的值。感谢您的回复-我已经尝试过了,但是我得到的字符串仅限于servlet名称,即httP://www.localhost:8080/loginProcess,仅此而已。我没有完整的字符串与请求参数显示它是本地主机,如果它是从谷歌返回?非常感谢。。我犯了一个小错误,将响应类型作为令牌而不是代码发送。