Java Google应用程序引擎getCurrentUser()返回null

Java Google应用程序引擎getCurrentUser()返回null,java,google-app-engine,Java,Google App Engine,我正在开发一个需要访问帐户中所有用户的应用程序。 所有操作都是使用管理帐户在Google Apps for Business帐户上完成的 一般的想法是访问我的应用程序,而无需从仪表板上获取任何登录屏幕/URL,并检索必要的数据(在本例中为用户)。可能吗 我不知道是否必须设置OAuth(我的应用程序部署在appspot上并添加到GApps帐户)-正如我前面所说,我只想启动我的应用程序,它应该从当前登录的GApps用户那里获得登录凭据 但是,获取当前用户返回null。这是我的servlet,其中包含

我正在开发一个需要访问帐户中所有用户的应用程序。 所有操作都是使用管理帐户在Google Apps for Business帐户上完成的

一般的想法是访问我的应用程序,而无需从仪表板上获取任何登录屏幕/URL,并检索必要的数据(在本例中为用户)。可能吗

我不知道是否必须设置OAuth(我的应用程序部署在appspot上并添加到GApps帐户)-正如我前面所说,我只想启动我的应用程序,它应该从当前登录的GApps用户那里获得登录凭据

但是,获取当前用户返回null。这是我的servlet,其中包含获取当前用户的方法:

public class ExperimentalServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();
        resp.setContentType("text/plain");
        resp.getWriter().println("User: " + (user == null ? "<null>" : user.getNickname()));
    }

}
公共类实验Servlet扩展了HttpServlet{
@凌驾
受保护的void doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
UserService UserService=UserServiceFactory.getUserService();
User=userService.getCurrentUser();
分别为setContentType(“文本/普通”);
resp.getWriter().println(“用户:+(用户==null?”):User.get昵称());
}
}
appengine-web.xml

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>name-of-my-application</application>
    <threadsafe>true</threadsafe>
    <version>1</version>
</appengine-web-app>

我的申请表名称
真的
1.
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     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"
     version="2.5">

<servlet>
    <servlet-name>experimental</servlet-name>
    <servlet-class>my.app.domain.ExperimentalServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>experimental</servlet-name>
    <url-pattern>/experimental</url-pattern>
</servlet-mapping>

<welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

实验的
my.app.domain.ExperimentalServlet
实验的
/实验性
index.jsp

如果getCurrentUser返回null,则没有用户登录

在这种情况下,您可以自己编写代码重定向到登录页面 或者您将应用程序配置为所有/部分URL都需要登录

然后appengine将自动将用户重定向到登录屏幕,并在成功登录后返回

在appengine应用程序仪表板中,您可以配置允许哪些用户登录、全部登录或仅允许来自Gapps域的用户登录

如果您将其设置为您的Gapps域,并将应用程序中的所有URL配置为需要身份验证,则如果Gapps用户进入您的应用程序,他将自动登录,如果他没有登录到他的Gapps帐户,则将向用户显示登录屏幕

下面是如何配置安全URL的链接

看起来像这样(除了带有重定向的奇怪名称):
resp.sendRedirect(userService.createLoginURL(req.getRequestURI())解决了问题。谢谢