3

以下代码将从 appengine 应用程序(在本例中为自定义域)和 google.com 中注销用户:

public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    UserService userService = UserServiceFactory.getUserService();

    String thisURL = req.getRequestURI();

    resp.setContentType("text/html");
    if (req.getUserPrincipal() != null) {
        resp.getWriter().println("<p>Hello, " +
                                 req.getUserPrincipal().getName() +
                                 "!  You can <a href=\"" +
                                 userService.createLogoutURL(thisURL) +
                                 "\">sign out</a>.</p>");
    }
}
}

我们如何仅从 appengine 应用程序中退出并保持用户登录 google.com?

4

1 回答 1

2

无法直接从 UserService API 执行此操作。

您可以手动删除已设置的 AppEngine 特定 cookie,而不是使用 UserService API 注销。查看这篇博客文章,讨论如何做到这一点(用 Python 编写,但您应该能够为 Java 修改它)。这应该有效地将用户从您自己的应用程序中注销,而不是从其他 Google 服务中注销(尽管我自己没有对此进行测试)。

更健壮的方法是创建您自己的 User 类并管理您自己的会话 cookie,同时包装 UserService API。与非常易于使用的 UserService API 相比,这种方法的缺点是设置它需要额外的工作。但是,维护自己的用户的好处是,您将能够使用除 Google 之外的其他身份验证方法(例如,现在您也可以使用 Facebook 登录,如果您选择设置,甚至可以使用本机登录向上)。

于 2013-01-06T01:34:59.360 回答