Google app engine 在对google联系人进行身份验证时,来自google的回调在新会话中返回

Google app engine 在对google联系人进行身份验证时,来自google的回调在新会话中返回,google-app-engine,gdata-api,gdata,Google App Engine,Gdata Api,Gdata,我正在使用GAE+GWT+Guice,为googlecontactsapi做以下工作。参见代码 当Google服务使用令牌重定向回应用程序URL时, 它创建了新的会话,因为URL是从Google服务器而不是客户端浏览器调用的 两个问题 1.这是正确的行为吗?如果没有,我如何更正? 2.为请求用户存储/使用令牌的首选方式是什么 请求Servlet GWT RPC 回调servlet 编辑 我知道接收不同的会话是正确的行为,所以现在我想弄清楚,在我的应用程序中,我为哪个用户会话接收了回调。所以我想把

我正在使用GAE+GWT+Guice,为googlecontactsapi做以下工作。参见代码

当Google服务使用令牌重定向回应用程序URL时, 它创建了新的会话,因为URL是从Google服务器而不是客户端浏览器调用的

两个问题 1.这是正确的行为吗?如果没有,我如何更正? 2.为请求用户存储/使用令牌的首选方式是什么

请求Servlet GWT RPC

回调servlet

编辑 我知道接收不同的会话是正确的行为,所以现在我想弄清楚,在我的应用程序中,我为哪个用户会话接收了回调。所以我想把会话\ id/用户\ id传递给回调\ uri,但这是不允许的,回调uri必须与GoogleAPI控制台中注册的回调uri匹配。我真的被卡住了。。看来只有我有这个问题,知道吗

public String getAuthLink() {
    String next = "http://localhost:8888/serviceCallback?service=GMAIL";
    String scope = "https://www.google.com/m8/feeds/";
    boolean secure = false;
    boolean session = true;
    return AuthSubUtil.getRequestUrl(next, scope, secure, session);
}

@Override
public boolean isAuthenticated(ServiceProviderKey serviceProviderKey) {
    //SESSION PRINT A
    System.out.println("Session: " + getThreadLocalRequest().getSession().getId()); 
    //SOME CODE
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        String authToken = req.getParameter("token");
        String sessionToken = AuthSubUtil.exchangeForSessionToken(authToken, null);
            //SESSION PRINT B
        System.out.println("Session: " + req.getSession().getId());
        req.getSession().setAttribute("token", sessionToken);
}