Oauth 2.0 在Spring引导和OAUTH2 SalesForce会话期间刷新令牌

Oauth 2.0 在Spring引导和OAUTH2 SalesForce会话期间刷新令牌,oauth-2.0,salesforce,Oauth 2.0,Salesforce,我正在连接SalesForce rest API,使用Spring的oauth2template,它工作得非常好。我使用的是Spring Boot,所以它基本上只是自动连接Oauth2RestTemplate和配置oauth2属性,但是有一个挑战,我不确定这是一个bug还是我没有正确配置的东西。这种情况是当代币在SalesForce端过期时。我在oauth2上下文中仍然有旧令牌,因此如果我希望框架获取一个新令牌,我必须手动使accesstoken为null,并在上下文中将其设置为null,以便g

我正在连接SalesForce rest API,使用Spring的oauth2template,它工作得非常好。我使用的是Spring Boot,所以它基本上只是自动连接Oauth2RestTemplate和配置oauth2属性,但是有一个挑战,我不确定这是一个bug还是我没有正确配置的东西。这种情况是当代币在SalesForce端过期时。我在oauth2上下文中仍然有旧令牌,因此如果我希望框架获取一个新令牌,我必须手动使accesstoken为null,并在上下文中将其设置为null,以便getAccesstoken在OAuth2RestTemplate类中调用acquireAccessToken。我知道这是错误的,但我怀疑这是因为我第一次从SalesForce获得代币时收到丢失的代币信息。这是我第一次获取令牌时的响应

{
    "access_token": "<LONG_VALUE>",
    "instance_url": "<SALESFORCE_SERVER>",
    "id": "<ID_URL>",
    "token_type": "Bearer",
    "issued_at": "1538640612182",
    "signature": "<SIGNATURE_ID>"
}
{
“访问令牌”:“,
“实例url”:“”,
“id”:“,
“令牌类型”:“承载者”,
"发出日期:"1538640612182",
“签名”:”
}
我无法从SalesForce获取刷新令牌值。我想这就是我的OAuth2AccessToken没有到期日期的原因。当我调用getExpiration查看日期时,它是空的


那我能在这里做什么呢?这里是否缺少其他配置?我不想继续攻击框架,因为它应该为我处理所有事情,特别是在到期时获取新令牌。

我的第一个问题被删除,因为没有人能够回答这个问题,但是我想自己提出一个解决方案。我认为全世界都需要知道,但我也希望得到一些关于解决方案的反馈

显然,当您检索令牌时,SalesForce可以设置一个refreshtoken响应,但在我的情况下,我没有得到refreshtoken。所以无论如何。为了使用类似于refreshtoken策略的东西,我在我的Spring应用程序中创建了一个日期作为bean:

@Bean
    public Date expiryDate() {
    ... Date configuration here ....

日期是在将来的某个时候

然后,每当您需要检查到期日期时,您只需检查今天的日期是否超过expiryDate bean中的日期。这就是避免Spring的OAUTH2框架每次都从服务器获取新的accesstoken的方法。这是一种黑客破解的解决方案(我知道),但这是一种节省太多通话的方法