Google Identity Toolkit 忽略 signInSuccessUrl 的哈希 (#) 片段

Google Identity Toolkit ignores hash (#) fragment of signInSuccessUrl

我在我的 Web 应用程序中使用 Google Identity Toolkit 进行身份验证(Java 的 GAE)。当用户尝试访问 URL http://www.example.com/home#xyz 时,我的应用程序将用户重定向到身份验证页面,在我的例子中是 http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyz.

但是,身份验证成功后,身份工具包会将用户重定向到 http://www.example.com/home 而不是 http://www.example.com/home#xyz

这是身份工具包的问题还是我遗漏了什么?是否有解决方法可以在重定向后保留哈希片段?

这是完整的用例。

用户转到 URL http://www.example.com/home#xyz。如果用户未登录,home 页面(即 JSP 使用 scriptlet 将用户重定向到 http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home

JSP scriptlet 无法访问散列片段 #xyz(因为它在服务器中是 运行)但浏览器会自动在末尾附加 #xyz我在地址栏中看到 http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyz

但是,登录后,用户被重定向到 http://www.example.com/home。我需要访问我的 JSP scriptlet 中的散列片段,我不确定该怎么做,以便我可以使用散列片段对 URI 进行编码,如下面 bojeil 的回复中所述。

您的小部件 url 应该是: 'http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=' + encodeURIComponent('/home#xyz')

哈希部分被视为 url 本身和此处 signInSuccessUrl 查询值的一部分。