При проверке подлинности для контактов Google обратный вызов от Google вернулся в новом сеансе - PullRequest
1 голос
/ 16 июля 2011

Я использую GAE + GWT + Guice, выполняю следующие действия для API контактов Google.(см. код)

Когда служба Google перенаправляет обратно на URL приложения с токеном, создается новый сеанс, так как URL был вызван с сервера Google, а не из браузера клиента.

Два вопроса
1. Это правильное поведение?Если нет, как я могу это исправить?
2. Каков предпочтительный способ хранения / использования токена для запрашивающего пользователя?

Запрос сервлета (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
}

Обратный сервлет

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

EDIT

Я понял, что получение другого сеанса - это правильное поведение, поэтому теперь я хочу выяснить, для какого пользователя(сеанс в моем приложении) Я получил обратный вызов для.поэтому я передал session_id / user_id в callback_uri, но это не разрешено, URI обратного вызова должен совпадать с зарегистрированным URI обратного вызова в консоли API Google.Я действительно застрял .. Похоже, только у меня есть эта конкретная проблема, есть идеи?

...