我们已成功使用GData库来访问用户的Google文档。但是,当许多用户登录我们的网站并同时或连续授权我们的网络应用时,我们遇到了问题。
以下是发生的事情:
首次使用者成功登录,通过OAuth授权我们的网络应用,并能够添加量规(或谷歌电子表格)。
第二个用户,在第一个用户添加量规后立即成功登录然后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)
帮助!
答案 0 :(得分:0)
很难说清楚,但我的预感是某处存在并发错误,并且在多个请求处理线程中使用了一些非线程安全的OAuth对象。