GData ライブラリを使用してユーザーの Google ドキュメントにアクセスすることに成功しました。しかし、多くのユーザーがサイトにログインし、同時にまたは連続して Web アプリを承認すると、問題が発生しました。
何が起こるかは次のとおりです。
最初のユーザーはログインに成功し、OAuth を介して Web アプリを承認し、ルーブリック (または Google スプレッドシート) を追加できます。
2 番目のユーザーは、最初のユーザーがルーブリックを追加した直後に、正常にログインし、webapp は認証に失敗します (トークンが指定されていません。ログに記録しようとしました。)
3 番目のユーザーがログインに失敗します。
4 番目のユーザーはログインし、OAuth を介して承認し、ルーブリックを正常に作成できました。
5 番目のユーザーはログインできましたが、2 番目のユーザーと同様に、承認時に無効なトークンを取得しました (トークンが与えられていません)。
そして、リストは続きます。結果は予測できませんでした。
以下は、失敗シナリオが発生したときに取得するスタック トレースの抜粋です。
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)
ヘルプ!