Мы успешно использовали библиотеки GData для доступа к Google Документам пользователя. Но мы столкнулись с проблемами, когда многие пользователи заходят на наш сайт и авторизуют наше веб-приложение одновременно или последовательно.
Вот что происходит:
Успешный вход первого пользователя, авторизация нашего веб-приложения через OAuth и возможность добавления рубрики (или таблицы Google).
Второй пользователь, сразу после того, как первый пользователь добавил рубрику, успешно входит в систему, затем webapp не удается авторизоваться (токен не указан. Я попытался его зарегистрировать).
Третий пользователь не может войти в систему.
Четвертый пользователь смог войти в систему, авторизоваться через OAuth и успешно создать рубрики.
Пятый пользователь смог войти в систему, но, как и второй пользователь, получает неверный токен при авторизации (токен не указан).
И этот список можно продолжить. Результаты оказались непредсказуемыми.
Ниже приведена выдержка из трассировки стека, которую мы получаем, когда происходит сценарий сбоя:
Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException:
java.lang.NullPointerException
at com.google.gdata.client.authn.oauth.OAuthUtil.normalizeParameters(OAuthUtil.java:158)
at com.google.gdata.client.authn.oauth.OAuthUtil.getSignatureBaseString(OAuthUtil.java:81)
at com.google.gdata.client.authn.oauth.OAuthHelper.addCommonRequestParameters(OAuthHelper.java:649)
at com.google.gdata.client.authn.oauth.OAuthHelper.getOAuthUrl(OAuthHelper.java:592)
at com.google.gdata.client.authn.oauth.OAuthHelper.getUnauthorizedRequestToken(OAuthHelper.java:276)
at com.projectrix.controller.OAuthController.authorize(OAuthController.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Method.java:40)
Помощь!