使用omniauth salesforce刷新令牌

时间:2013-01-31 21:44:50

标签: omniauth

这是使用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”}

然后我收到一条错误说: 不允许请求的范围

此外,如果我尝试将以下内容放在浏览器上,我收到相同的错误消息

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

非常感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:8)

omniauth.rb provider语句中设置范围是正确的。但是,在salesforce.com发布refresh_token之前,必须配置应用程序以支持此OAuth范围。

  1. 在salesforce.com上,导航到您配置应用的位置。 (设置>创建>应用)
  2. 在“已连接的应用”下,单击应用程序的名称以查看其设置,然后单击“编辑”。
  3. 在选定的OAuth范围下,确保选中“代表您执行请求”。即使您已选择“完全访问权限”,也必须包括此内容。
  4. 保存,然后再次尝试您的OAuth流程。这需要一段时间才能使更新传播。
  5. 在您的回调控制器操作中,refresh_token现在可以使用request.env["omniauth.auth"].credentials.refresh_token