この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

署名付き要求の要求

認証に署名付き要求を使用するようにキャンバスアプリケーションが設定されている場合、SDK を使用して署名付き要求をオンデマンドで要求できます。アプリケーションの読み込み時に使用された署名付き要求の再送信、または新しい署名付き要求の送信を Salesforce に要求できます。署名付き要求の送信要求は、期限切れのセッションを更新する場合や、アプリケーションがリダイレクトされた後に認証情報を取得する場合に役立ちます。

署名付き要求は、SDK の refreshSignedRequest() または repost() JavaScript メソッドを使用してオンデマンドで要求できます。refreshSignedRequest() は、コールバックを介して新しい署名付き要求を返します。repost() は、キャンバスアプリケーションに対する新しい POST の開始を親ウィンドウに要求し、更新された署名付き要求を含むアプリケーションページを再読み込みします。

アプリケーションの署名付き要求を更新する必要がある場合は、常にこれらの方法を使用します。次に、署名付き要求情報を更新する必要が生じる可能性のあるシナリオ例を示します。
  • 通常、署名付き要求内の OAuth トークンは、2 時間後に有効期限が切れます。OAuth トークンの有効期限が切れているが、追加の API 要求を実行する必要がある場合、refreshSignedRequest() をコールすることで、ユーザの作業を中断することなく新しい OAuth トークンを取得できます。
  • 特に複数のシステムでシングルサインオン機能を提供する場合、キャンバスアプリケーションでリダイレクトを使用する必要が生じることがあります。キャンバスアプリケーションでリダイレクトを使用すると、最初の署名付き要求情報を含む元のリクエストボディはリダイレクト URL で受信されません。新しいメソッドを使用して、署名付き要求を再試行できます。
  • Summer '14 以降では、キャンバスアプリケーションはユーザ承認アプリケーションになる可能性があります。ユーザ承認アプリケーションがユーザによって承認されていない場合、最初の署名付き要求 POST はアプリケーションで取得されません。代わりに、OAuth でアプリケーションを承認する必要があります。その後、repost() をコールして署名付き要求を取得できます。

これらの方法を使用するには、認証で署名付き要求を使用するようにキャンバスアプリケーションを設定する必要があります。また、Force.com Canvas SDK の参照で説明されているように JavaScript コードで canvas-all.js を参照する必要もあります。

要求が成功したら、返された SignedRequest 情報をキャンバスアプリケーションで検証する必要があります。Salesforce から受信する署名付き要求情報の検証についての詳細は、署名付き要求の検証および復号化を参照してください。

refreshSignedRequest() を使用した署名付き要求の取得

refreshSignedRequest() を使用して、指定のコールバックを介して新しい署名付き要求を行います。この例では、応答コードをチェックするコールバックで refreshSignedRequest() がコールされ、署名付き要求が、コンシューマの秘密で署名されたハッシュ済み Based64 コンテキストと、Base64 で符号化されたコンテキスト自体に解析されます。
1// Gets a signed request on demand.
2    Sfdc.canvas.client.refreshSignedRequest(function(data) {
3        if (data.status === 200) {
4            var signedRequest =  data.payload.response;
5            var part = signedRequest.split('.')[1];
6            var obj = JSON.parse(Sfdc.canvas.decode(part));
7        }
8    }

repost() を使用した署名付き要求の取得

repost() を使用して、新しい POST をキャンバスアプリケーション URL に送信するように親ウィンドウに指示します。POST には、アプリケーションの読み込み時に使用された署名付き要求または新しい署名付き要求が含まれます。refreshSignedRequest() とは異なり、repost() を使用すると、キャンバスアプリケーションページが再読み込みされます。次の例では、repost() をコールして、元の署名付き要求を行います。
1// Gets a signed request on demand, without refreshing the signed request.
2    Sfdc.canvas.client.repost();
次の例では、repost() をコールして、新しい署名付き要求を行います。
1// Gets a signed request on demand, first by refreshing the signed request.
2    Sfdc.canvas.client.repost({refresh : true});