2013-01-31 33 views
2

這是一個使用omniauth-salesforce的ruby問題。我有omniauth 1.1.1和omniauth-salesforce 1.0.3,我可以得到用戶認證。但是,默認情況下不會返回refresh_token。我只獲得access_token。我的回調URL是http:// localhost:3000/auth/salesforce/callback使用omniauth salesforce更新令牌

根據「在Force.com上深入挖掘OAuth2.0」的說明,缺省範圍https://login.salesforce.com/services/oauth2/authorize是id api refresh_token。但這種情況並非如此。

然後II試圖在omniauth.rb指定範圍參數

供應商:銷售人員,salesforce_client_id,client_secret,{:範圍=> 「ID API refresh_token」}

然後,我得到一個錯誤說: 請求的範圍是不允許

另外,如果我嘗試把下面的瀏覽器,我得到了同樣的錯誤消息

https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=3MVG9rFJvQRVOvk4RuIKaSYwf07LcsMtIAUK7h3Q6n5OHfD.IbFpEsROli3SqxWo67RklJ5FBdnYf4ejHNFrq&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Fsalesforce%2Fcallback&display=page&scope=api

任何幫助將不勝感激。

感謝,

回答

8

你是正確的設置範圍在omniauth.rbprovider聲明。但是,在salesforce.com發佈refresh_token之前,應用程序必須配置爲支持此OAuth範圍。

  1. 在salesforce.com上,導航到您的應用程序配置位置。 (設置>創建>應用程序)
  2. 在連接的應用程序下,單擊您的應用程序名稱以查看其設置,然後單擊編輯。
  3. 在選定的OAuth範圍下,請確保選中「隨時代表您執行請求」。即使您已選擇「完全訪問權限」,也必須包含此項。
  4. 保存,然後再次嘗試您的OAuth流程。它需要很短的時間才能傳播更新。

在您的回撥控制器操作中,refresh_token現在將在request.env["omniauth.auth"].credentials.refresh_token中可用。