【发布时间】:2017-06-26 13:25:45
【问题描述】:
UserService.getCurrentUser() 在 AppEngine HttpServlet 发布请求中返回 null。
resp.sendRedirect() 也没有被重定向。这发生在生产环境中,而user 数据在开发服务器中返回。
UserService userService = UserServiceFactory.getUserService();
user = userService.getCurrentUser();
if (user == null) {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
return;
}
当OAuthService.getCurrentUser() 被调用时InvalidOAuthParametersException 被抛出。
OAuthService oathService = OAuthServiceFactory.getOAuthService();
try {
String scope = "https://www.googleapis.com/auth/userinfo.email";
user = oathService.getCurrentUser(scope);
} catch (OAuthRequestException e) {
throw new IOException("Error retrieving user info!");
}
在生产环境中的 HttpServlet 中获取 User 数据会以所有可能的方式引发错误。检索User 数据的推荐方法是什么?
我在下面分享了@987654330@ 文件。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xml>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>${appengine.app.id}</application>
<version>${appengine.app.version}</version>
<threadsafe>true</threadsafe>
<env-variables>
<env-var name="TEST_DATA" value="xxx"/>
</env-variables>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
</appengine-web-app>
web.xml在下方分享
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>com.setv.app.spi.DatabaseApi</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>TransactionStatus</servlet-name>
<servlet-class>com.setv.app.servlet.TransactionStatus</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TransactionStatus</servlet-name>
<url-pattern>/transaction/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
【问题讨论】:
-
你能显示你的 appengine.xml 配置文件吗?
-
@SimoneTallevi-Diotallevi 分享了 appengine-web.xml 文件
-
我也可以看看你的 web.xml
-
@SimoneTallevi-Diotalevi
web.xml文件已共享。
标签: google-app-engine servlets