2012-06-13 23 views
6

我與顯然需要OAuth身份驗證的自定義APEX服務交互。我可以輕鬆認證和授權我的應用程序。一切正常。SalesForce中沒有refresh_token OAuth響應

但是,我收到的訪問令牌往往會過期。

當然,我可以通過發送一個refresh_token來刷新它。聽起來很棒。

問題是我不接受來自SalesForce的響應中的refresh_token。

我向[instance] .salesforce.com/services/oauth2/token發送請求,我也嘗試使用login.salesforce.com/services/oauth2/token,但在響應中找不到'refresh_token' 。除此之外,還有一切!

+0

您正在使用哪種oauth流?你的回撥是什麼? – superfell

+0

@superfell除了範圍之外,一切都是正確的。請參閱下面的答案。不管怎麼說,還是要謝謝你 :)! –

回答

4

我已經解決了這個問題,這要感謝我的同事。

我應該在檢索授權碼時向範圍添加'refresh_token'。

+3

實際上,除非您正在構建移動應用程序或In-SalesForce應用程序,否則refresh_tokens不會(或不再)分發。請參閱http://wiki.developerforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com並搜索「請注意,如果出現以下任一情況,則僅發送refresh_token」。 4個小時後,我發現了這一點,試圖找出它爲什麼不給我一個。 :)我很高興被證明是錯誤的,雖然.. – Anthony

+1

你有沒有得到這個工作?儘管設置了範圍,我仍沒有收到刷新令牌。 –

+0

除此之外'refresh_token'不是範圍,但'offline_access'是.. –

9

請檢查「選定的OAuth範圍」部分,該部分需要啓用「隨時代表您執行請求」以獲取刷新令牌。創建==>應用程序==> API(啓用OAuth設置)==>選定的OAuth範圍。

+2

我不確定爲什麼「完全訪問(完整)」範圍是不夠的......但事實並非如此。你也必須這樣做。非常感謝。 – barclay

+1

這應該是被接受的答案。 – Detached