![](/img/trans.png)
[英]Spring Boot Oauth2 Refresh Token - IllegalStateException
[英]Refresh token during Spring Boot and OAUTH2 SalesForce session
我正在連接到 SalesForce rest API,並且使用 Spring 的 oauth2template 它工作得非常好。 我正在使用 Spring Boot,所以它基本上只是自動裝配 Oauth2RestTemplate 並配置 oauth2 屬性,但是有一個挑戰,我不確定這是一個錯誤還是我沒有正確配置的東西。 這種情況是當令牌在 SalesForce 端過期時。 我在 oauth2 上下文中仍然有舊令牌,所以如果我希望框架獲取新令牌,我必須手動取消訪問令牌並將其設置為空,以便 getAccesstoken 在 OAuth2RestTemplate 類中調用acquireAccessToken。 我知道這是錯誤的,但我懷疑這是因為我第一次從 SalesForce 獲取令牌時收到了丟失的令牌信息。 這是我第一次獲取令牌時的響應
{
"access_token": "<LONG_VALUE>",
"instance_url": "<SALESFORCE_SERVER>",
"id": "<ID_URL>",
"token_type": "Bearer",
"issued_at": "1538640612182",
"signature": "<SIGNATURE_ID>"
}
我無法從 SalesForce 獲取 refresh_token 值。 我認為這就是為什么我的 OAuth2AccessToken 沒有到期日期。 當我調用 getExpiration 查看日期時,它為空。
那我能在這里做什么? 我在這里缺少任何其他配置嗎? 當框架應該為我處理所有事情時,我不喜歡繼續破解框架,尤其是在它到期時獲取新令牌。
我的第一個問題被刪除了,因為沒有人能夠回答這個問題,但是我想自己提出一個解決方案。 我認為全世界都需要知道,但我也很想得到一些對解決方案的反饋。
顯然,當您檢索令牌時,可以使用 refreshtoken 響應設置 SalesForce,但在我的情況下,我沒有獲得 refreshtoken。 所以無論如何。 為了使用類似於 refreshtoken 策略的東西,我在 Spring 應用程序中創建了一個 Date 作為 bean:
@Bean
public Date expiryDate() {
... Date configuration here ....
日期將在未來的某個時間
然后每當您必須檢查到期日時,您只需檢查今天的日期是否超過了 expiryDate bean 中的日期。 這就是您可以避免 Spring 的 OAUTH2 框架每次從服務器獲取新訪問令牌的方法。 這是一種黑客解決方案(我知道),但它是一種節省太多電話的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.