2

これは、omniauth-salesforceを使用したルビーの質問です。omn​​iauth1.1.1とomniauth-salesforce1.0.3を使用しており、ユーザー認証を取得できます。ただし、デフォルトではrefresh_tokenは返されません。access_tokenしか取得できません。私のコールバックURLはhttp:// localhost:3000 / auth / salesforce/callbackです

「Force.comのOAuth2.0を深く掘り下げる」の説明に基づくと、https: //login.salesforce.com/services/oauth2/authorizeのデフォルトのスコープはidapirefresh_tokenです。しかし、そうではありません。

次に、IIは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.IbFpEsforce%F%2

どんな助けでも大歓迎です。

ありがとう、

4

1 に答える 1

8

omn​​iauth.rbのステートメントでスコープを設定するのは正しいですprovider。ただし、salesforce.com が発行する前に、refresh_tokenこの OAuth スコープをサポートするようにアプリケーションを構成する必要があります。

  1. salesforce.com で、アプリが構成されている場所に移動します。(設定 > 作成 > アプリ)
  2. [接続済みアプリ] で、アプリケーションの名前をクリックして設定を表示し、[編集] をクリックします。
  3. [選択した OAuth スコープ] で、[いつでもあなたに代わってリクエストを実行する] が選択されていることを確認します。すでに「フル アクセス」を選択している場合でも、これを含める必要があります。
  4. 保存してから、OAuth フローを再試行してください。更新が反映されるまで少し時間がかかります。

コールバック コントローラー アクションで、refresh_tokenが で使用できるようになりますrequest.env["omniauth.auth"].credentials.refresh_token

于 2013-03-20T02:50:13.130 に答える