【发布时间】:2017-12-26 07:11:41
【问题描述】:
我的示例应用程序在本地环境中工作。但是,它不适用于 Java8 标准环境。以下项目是示例应用程序项目。
https://github.com/nosix/appengine-java8-spring-oauth2
Java8标准环境出现如下错误:
Authentication Failed: Could not obtain access token
我在 Spring OAuth 的源代码中添加了日志并调查了原因。错误的原因似乎是会话数据已丢失。
它的操作如下:
preservedState 在AuthorizationCodeAccessTokenProvider::getParametersForTokenRequest 中为空。所以,InvalidRequestException 被抛出。这是错误的原因。
setPreservedState 方法在OAuth2RestTemplate::acquireAccessToken 中被调用。此时,preservedState 设置为 null。
DefaultOAuth2ClientContext 实例有preservedState。 DefaultOAuth2ClientContext 的 preservedState 实例在 Java8 标准环境中为空。但是,它在本地环境中不为空。
DefaultOAuth2ClientContext 实例存储在会话中。我知道它存储在本地环境中的内存和标准环境中的数据存储中。
从上面我猜测是会话数据丢失了。
我被困在调查中。有没有可以作为解决线索的信息?
【问题讨论】:
标签: java spring google-app-engine oauth-2.0