適用於更新工作階段的 OAuth 2.0 重新整理權杖流程
OAuth 2.0 重新整理權杖流程會更新 OAuth 2.0 Web 伺服器流程或 OAuth 2.0 使用者代理程式流程核發的存取權杖。
必要版本
| 提供版本:Salesforce Classic (並非所有組織皆適用) 和 Lightning Experience |
| 提供版本:所有版本 |
在用戶端透過連線應用程式接收存取權杖後,就可以使用重新整理權杖,在目前的工作階段過期時取得新的工作階段。連線應用程式工作階段逾時值會判斷存取權杖是否不再有效,以及何時使用重新整理權杖來申請新的權杖。
為了提高安全性,當您設定 OAuth 設定時,請在連線應用程式或外部用戶端應用程式上啟用重新整理權杖輪換。啟用此設定後,連線應用程式會在每次叫用流程時核發新的重新整理權杖以及存取權杖。先前的重新整理權杖會自動失效。重新整理權杖輪換可確保每個使用者僅能使用每個重新整理權杖一次,因此重新整理權杖無法用於取得新的存取權杖。如果有人嘗試使用已輪換的重新整理權杖,Salesforce 會使目前的重新整理權杖及任何相關聯的存取權杖無效。若要取得新的重新整理權杖,用戶端必須完成新流程。
要求更新的存取權杖
連線應用程式可以透過將以下其中一個重新整理權杖 POST 要求傳送至 Salesforce 權杖端點,以使用重新整理權杖 POST 要求取得新的存取權杖。
連線應用程式可以在重新整理權杖 POST 要求的內文中傳送 client_id 和 client_secret,如此處所示。
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/
grant_type=refresh_token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571&
refresh_token=your token here 您可以使用 HTTP Basic 驗證配置,而非在重新整理權杖 POST 要求的內文中傳送用戶端認證作為參數。此計畫的格式需要貼文授權標題中的 client_id 和 client_secret,如下所示:
Authorization:
Basic64Encode(client_id:secret)
client_id 與 client_secret 以冒號 (:) 分隔。如需詳細資訊,請參閱「OAuth 2.0 授權架構」。
此範例顯示使用 HTTP Basic 驗證配置的重新整理權杖 POST 要求 (而非透過 POST 要求的內文傳送用戶端認證)。
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Authorization: Basic
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571
grant_type=refresh_token&
refresh_token=your token here client_id 和 client_secret,則會忽略授權標頭。避免傳送包含相同重新整理權杖的同時要求。如果您的用戶端同時傳送相同的要求,則某些要求會間斷失敗,且「登入歷程記錄」中的「狀態」欄會顯示「失敗:權杖要求正在處理中。請改為快取和重複使用權杖,而非持續傳送新存取權杖的要求。如果您使用相同的重新整理權杖傳送同時要求 (不建議),請開發在發生此錯誤時重新嘗試要求的方法。
在使用重新整理權杖 POST 要求格式時,包含以下參數。
| 參數 | 描述 |
|---|---|
client_id
|
連線的應用程式取用者金鑰。若要存取取用者金鑰,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」。有時系統會提示您在檢視消費者金鑰前先驗證身分。 |
client_secret
|
連線的應用程式取用者密碼。若要存取取用者密碼,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」。有時系統會提示您在檢視消費者密碼前先驗證身分。 |
grant_type
|
連線應用程式要求的 OAuth 2.0 授與類型。此流程的值必須是 refresh_token。 |
refresh_token
|
從 Web 伺服器、使用者代理程式或混合式應用程式權杖流程所取得的權杖。這個值是密碼。採取適當的措施來保護此值。只有在您的連線應用程式使用 refresh_token 範圍設定時,才會傳回此參數。 |
client_assertion
|
您可以提供 client_assertion 和 client_assertion_type,而不是傳遞 client_secret。如果未提供 client_secret 參數,Salesforce 會檢查 client_assertion 和 client_assertion_type。請參閱使用 client_assertion 而非 client_secret。 |
client_assertion_type
|
使用
|
format
|
如果未包含在要求的標頭中,刖您可以指定預期的傳回格式。
|
Salesforce 授與新存取權杖
在確認要求後,Salesforce 會將含新存取權杖的要求傳送給連線應用程式。
這裡是 Salesforce 中的範例 JSON 回應。
{
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448384422",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4",
"token_type":"Bearer",
"scope":"id api refresh_token"
}這裡是範例 XML 回應。
<Oauth>
<access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB
aT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
</access_token>
<token_type>Bearer
</token_type>
<scope>id api refresh_token
</scope>
<instance_url>https://yourInstance.salesforce.com/</instance_url>
<id>https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P</id>
<issued_at>1278448101416</issued_at>
<signature>CMJ4l+CCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe+fVg=</signature>
</Oauth>此範例顯示 URL 編碼回應。
access_token=00Dx0000000BV7z%21AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2
ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
&token_type=Bearer&scope=id%20api%20refresh_token
&instance_url=https%3A%2F%2FyourInstance.salesforce.com
&id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P
&issued_at=1278448101416
&signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe%2BfVg%3D如果針對連線的應用程式或外部用戶端應用程式啟用重新整理權杖輪換,則回應會包含新的重新整理權杖。以下是啟用重新整理權杖輪換時的範例 JSON 回應。
{
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7T...",
"refresh_token":"CjAwRHgwMDAwMDAwQlY3eiFBUjhBUVAwaklUTjgwRVNFc2o1RWJhWl...",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"scope":"id api refresh_token",
"instance_url":"https://yourInstance.salesforce.com/",
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P"
"token_type":"Bearer",
"issued_at":"1278448384422",
}可將以下參數包含在回應內文中。
| 參數 | 描述 |
|---|---|
access_token
|
OAuth 權杖,連線應用程式會使用此權杖來代表用戶端應用程式,要求對受保護資源的存取權。範圍格式的其他權限可能會隨附存取權杖。 |
refresh_token
|
新重新整理權杖。使用重新整理權杖,在下次叫用重新整理權杖流程時取得新的存取權杖。只有在您為連線的應用程式或外部用戶端應用程式啟用重新整理權杖輪換時,才會包含此參數。 |
token_type
|
Bearer 權杖類型,用於包含存取權杖的所有回應。 |
token_format
|
如果已啟用您的連線應用程式或外部用戶端應用程式來核發 JSON Web 權杖 (JWT) 型存取權杖,則您的回應會包含此參數來表示存取權杖的格式。值為 如果您的應用程式核發不透明的存取權杖,則不會包含此參數。 |
instance_url
|
指示使用者組織例項的 URL。例如:https://yourInstance.salesforce.com/. |
id
|
身分 URL,此 URL 可用來識別使用者與查詢使用者的詳細資訊。請參閱身分 URL。 |
issued_at
|
建立簽章時的時間戳記 (單位為毫秒)。 |
signature
|
以 client_secret 簽署的 Base64 編碼 HMAC-SHA256 簽章。簽章可以包含串連的識別碼和 issued_at value,您可以用來確認身分 URL 自伺服器傳送後未變更。 |
sfdc_site_url
|
如果使用者是 Experience Cloud 網站的成員,則會提供網站 URL。 |
sfdc_site_id
|
如果使用者是 Experience Cloud 網站的成員,則會提供使用者網站的識別碼。 |

