簡體   English   中英

在 Spring Boot 和 OAUTH2 SalesForce 會話期間刷新令牌

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM