这是使用omniauth-salesforce的一个红宝石问题。我有omniauth 1.1.1和omniauth-salesforce 1.0.3,我可以通过用户身份验证。但是,默认情况下不返回refresh_token。我只获得access_token。我的回调URL是http:// localhost:3000 / auth / salesforce / callback
根据“在Force.com上深入挖掘OAuth2.0”的描述,https://login.salesforce.com/services/oauth2/authorize的默认范围是id api refresh_token。但事实并非如此。
然后我尝试在omniauth.rb中指定范围参数
提供者:salesforce,salesforce_client_id,client_secret,{:scope => “id api refresh_token”}
然后我收到一条错误说: 不允许请求的范围
此外,如果我尝试将以下内容放在浏览器上,我收到相同的错误消息
非常感谢任何帮助。
谢谢,
答案 0 :(得分:8)
在 omniauth.rb 的provider
语句中设置范围是正确的。但是,在salesforce.com发布refresh_token
之前,必须配置应用程序以支持此OAuth范围。
在您的回调控制器操作中,refresh_token
现在可以使用request.env["omniauth.auth"].credentials.refresh_token
。