java - createLoginURL 在 GAE 中创建无效的请求 URL

标签 java google-app-engine

我从以下代码中得到以下错误。我正在尝试通过 GAE 应用程序登录 Google 站点服务。

"The page you requested is invalid. "

    String authenticationUrl = userService.isUserLoggedIn()
    ? userService.createLogoutURL(MainServlet.MAIN_URL)
    : userService.createLoginURL(MainServlet.MAIN_URL+"?close=1");
    googleData.setAuthenticationUrl(authenticationUrl);

完整的登录网址

https://www.google.com/a/example.com/ServiceLogin?service=ah&passive=true&continue=http://myapp.appspot.com/_ah/login?continue=http://myapp.appspot.com/main%3Fclose%3D1&ltmpl=ga&ahname=Myapp+Google+Sites&sig=7cbc9f7c9e6ca443ed49f7ce9465e775

最佳答案

我认为您可能误解了createLoginURL的用途和目的。此方法旨在提供一个 URL,允许某人单独登录您的应用程序和您的应用程序。它不提供登录其他 Google 服务(例如协作平台)的方法。

您的应用程序可以登录并访问网站或任何其他安全的网络应用程序,但 Google AppEngine 不提供执行此操作的固定方法。您需要自己编写代码来完成此操作。

通常,您将请求一个 URL,响应将具有 HTTP 状态代码 302,并且登录页面的 URL 位于 Location header 字段中。然后,您将向该页面发送一个请求,该页面应返回 200 响应,并且响应正文中的某个位置将是您需要提供并 POST 回来的用户名和密码字段。如果凭据有效,服务器可能会返回一个身份验证 cookie,您将在每个后续请求中传递该 cookie。

如果您精通 Python,您可以在我的 AppEngine MVC 框架项目中的一些代码中查看其工作原理的示例。看看这个文件: http://code.google.com/p/gae-mvc-engine/source/browse/trunk/MVCTests.py并查看 ActiontestCase.run_action 方法。它处理向需要身份验证的 AppEngine 应用程序发出的请求。它还没有得到很好的评论——对此我表示歉意——但我希望它能提供一个有用的例子。如果我确实正确理解了您问题的本质。

关于java - createLoginURL 在 GAE 中创建无效的请求 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936862/

相关文章:

java - 如何在Java EE 6/7中使用MVC而不使用其他框架?

java - 在圆弧中心画线

java - 使用 Java 8 lambda 表达式过滤列表

java - AppEngine Memcache 原子获取和删除

android - com.google.api.client.googleapis.json.GoogleJsonResponseException : 404 Not Found in google app engine connected android project

java - 为什么 Google Guice 无法初始化 i18n 对象并给我 null

java - 简单的java数学函数不起作用

java - 为什么 API 调用需要 80 毫秒的延迟才能到达 Controller (在 Google App Engine 中)?

python - Python App Engine 上的 GWT

python - 尝试从 GAE python App 将文件写入 GCS 时出现 ForbiddenError