【发布时间】:2012-05-18 21:17:28
【问题描述】:
我正在尝试在我的 java Web 应用程序中使用 Google OAuth2.0 身份验证机制。但是,我在此过程中遇到了一些基本挑战,为此我在这里寻求帮助 -
我已在 Google API 控制台中注册了我的应用程序,并将登录 url 重定向到我的本地主机应用程序以用于开发目的。在用户对应用程序进行身份验证后,我正在尝试处理 google 在 servlet 中提供的访问令牌 - 但是,我看到来自 google 的 url 如下 -
http: //local host:8080//loginProcess#access_token=ya29.AHS6ZQBN-4Snrj6P9i4xPxbCxLLkmbPf3Jc2Dj7eUA72FWIy4&token_type=Bearer&expires_in=3600
servlet 名称为“loginProcess”,请注意后面的 # - 请求参数中有哈希,我无法使用 request.getParameter("access_token") 在 java servlet 中检索它们;
我希望我的问题很清楚 - 如果没有,请告诉我我遗漏的详细信息..
提前谢谢大家!
【问题讨论】:
-
在loginProcess后面应该是问号(?)而不是#,这样你就可以将值作为请求参数来检索。
-
完全正确!但是,这就是我从谷歌那里得到的。所以,我的问题是 - 我应该如何解析以“#”而不是“?”开头的请求参数?
-
你可以在这里做一件事。这只是一个调整。尝试获取它的请求 URL,比如 this.request.getRequestURL().toString()。并检查第一次出现的任何一个 '# ' 或者 '?'根据它们的存在,您可以检索令牌的值。
-
感谢 Unni V Mana 的回复 - 我已经尝试过了,但我只得到了 servlet 名称的字符串,即 httP://www.localhost:8080/loginProcess,就是这样。我没有带有请求参数的完整字符串
-
从 google 返回的 localhost 怎么样?