我正在使用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匹配。我真的被困了..看起来只有我有这个特殊问题,不知道吗?