DocuSign eSignature for Salesforce 7.0でのカスタムボタンエラー - This page requires a CSRF confirmation token, New button code format

DocuSign eSignature for Salesforce 7.0以降では、カスタムボタンのページ呼び出しやwindow.location.href値に新しい要件が追加されています。これは、Salesforceの最新のセキュリティアップデートをサポートするためです。

新しい要件を満たさない場合、以下のエラーメッセージが表示されます。

Error in Custom Button

エラーメッセージ: The link you followed isn’t valid. This page requires a CSRF confirmation token. Report this error to your Salesforce administrator.

Salesforceの最新のセキュリティ要件によりDocuSignのVisualforceページでのセキュリティが強化され、クロスサイトリクエストフォージェリ(CSRF)の脅威から保護されます。

解決方法

Salesforceの最新のセキュリティ要件をサポートするため、カスタムボタンの形式がURLFOR形式にアップデートされました。

***URLFORは、DocuSign eSignature for Salesforce 6.9でも使用できます。このため、7.0にアップグレードする前に、URLカスタムボタンでのURLFORをテストすることができます。***

コードの更新例:


Salesforce ClassicでのサンプルJavaScript:


{!REQUIRESCRIPT("/apex/dsfs__DocuSign_JavaScript")} //********* Option Declarations (Do not modify )*********// var RC = '';var RSL='';var RSRO='';var RROS='';var CCRM='';var CCTM='';var CCNM='';var CRCL='';var OCO='';var DST='';var LA='';var CEM='';var CES='';var STB='';var SSB='';var SES='';var SEM='';var SRS='';var SCS ='';var RES=''; //*************************************************// OCO = 'Tag'; DST = 'a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e'; LA = '0'; LF = '0'; CCRM = 'Decision Maker~Signer 1'; CCTM = 'Decision Maker~Signer'; //********* Page Callout (Do not modify) *********// window.location.href = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Opportunity.Id}&RC="+RC+"&RSL="+RSL+"&RSRO="+RSRO+"&RROS="+RROS+"&CCRM="+CCRM+"&CCTM="+CCTM+"&CRCL="+CRCL+"&OCO="+OCO+"&DST="+DST+"&CCNM="+CCNM+"&LA="+LA+"&CEM="+CEM+"&CES="+CES+"&SRS="+SRS+"&STB="+STB+"&SSB="+SSB+"&SES="+SES+"&SEM="+SEM+"&SRS="+SRS+"&SCS="+SCS+"&RES="+RES; //*******************************************//


Lightning ExperienceでのURL形式(v6.9までサポート):
*注: [内容のソース]として[URL]を選択する必要があります。

/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0 &SourceID={!Opportunity.Id} &DST=a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e &CCRM=Decision+Maker~Signer+1 &CCTM=Decision+Maker~Signer &LA=0 &LF=0 &OCO=Tag


URLFOR形式(v7.0以降で必須):
*注: [内容のソース]として[URL]を選択する必要があります。

{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope', null, [ SourceID = Opportunity.Id, CCRM = 'Decision Maker~Signer 1', CCTM = 'Decision Maker~Signer', DST = 'a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e', LA = '0', LF = '0', OCO = 'Tag' ] )}

ページ呼び出しセクションに対する簡単なJavaScript更新(v7.0以降でのClassicボタン)

既存のJavaScriptボタンの形式を保持する場合は、上記のURLFOR形式の代わりに、ページ呼び出しセクションのみを変更してカスタムコードを保持できます。

  • 以下のコードの「Page Callout」セクションを自分のボタンコードにコピーして、既存のページ呼び出し(window.location.href変数)を置き換えます。
  • このサンプルコードでは、商談オブジェクト(Opportunity)から文書を送信しています。ほかのオブジェクトを使用するには、「Opportunity.Id」の箇所を変更します。
  • 各変数を確実に宣言するため、「Option Declarations」セクションを最上部に記述します。


注: ハイライト表示された箇所は、従来のページ呼び出しからの変更を示しています。
 


//********* Option Declarations (Do not modify )*********//  var RC = '';var RSL='';var RSRO='';var RROS='';var CCRM='';var CCTM='';var CCNM='';var CRCL=''; var CRL='';var OCO='';var DST='';var LA='';var LF='';var CEM='';var CES='';var STB='';var SSB='';var SES='';var SEM='';var SRS='';var SCS ='';var RES=''; //*************************************************//  //custom code goes here//  //********* Page Callout (Do not modify) *********//  window.location.href = '{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope',null,[SourceID=Opportunity.Id])}&RC='+RC+'&RSL='+RSL+'&RSRO='+RSRO+'&RROS='+RROS+'&CCRM='+CCRM+'&CCTM='+CCTM+'&CRCL='+CRCL+'&CRL='+CRL+'&OCO='+OCO+'&DST='+DST+'&CCNM='+CCNM+'&LA='+LA+'&LF='+LF+'&CEM='+CEM+'&CES='+CES+'&SRS='+SRS+'&STB='+STB+'&SSB='+SSB+'&SES='+SES+'&SEM='+SEM+'&SRS='+SRS+'&SCS='+SCS+'&RES='+RES;  //*******************************************//