在谷歌联系人的身份验证上,谷歌的回调在新会话中返回

时间:2011-07-16 09:35:28

标签: google-app-engine gdata-api gdata

我正在使用GAE + GWT + Guice,为Google通讯录API执行以下操作。 (见代码)

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

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

请求Servlet(GWT RPC)

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
}

回调servlet

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);
}

修改

我明白接收不同的会话是正确的行为,所以现在我想弄清楚,我收到回调的用户(我的应用程序中的会话)。所以我虽然将session_id / user_id传递给callback_uri但是不允许,回调URI必须与Google API控制台中注册的回调URI匹配。我真的被困了..看起来只有我有这个特殊问题,不知道吗?

0 个答案:

没有答案