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

コールアウトエンドポイントとしての指定ログイン情報

指定ログイン情報では、1 つの定義にコールアウトエンドポイントの URL と必要な認証パラメーターを指定します。Apex コールアウトで指定ログイン情報をコールアウトエンドポイントとして指定するすべての認証が Salesforce によって管理されるため、コードでこれらを行う必要はありません。指定ログイン情報で定義されたサイトについては、外部サイトへのコールアウトに必要なリモートサイト設定もスキップできます。

指定ログイン情報には、非公開接続からのコールアウトの転送に使用できる OutboundNetworkConnection 項目も含まれます。エンドポイント URL と認証をコールアウト定義から切り離すことで、指定ログイン情報でコールアウトを簡単に管理できます。たとえば、エンドポイント URL が変更された場合も、指定ログイン情報を更新するだけです。その指定ログイン情報を参照するすべてのコールアウトは、引き続き機能します。

複数の組織がある場合、各組織に同じ名前でエンドポイント URL が異なる指定ログイン情報を作成できます。これにより、それらの指定ログイン情報の共有名を参照するコールアウト定義を 1 つだけパッケージして (すべての組織で) リリースできます。たとえば、各組織の指定ログイン情報に異なるエンドポイント URL を指定して、開発環境と本番環境の違いに対応することができます。Apex コールアウトでそれらの指定ログイン情報の共有名が指定されている場合、コールアウトを定義する Apex クラスをパッケージ化して、プログラムで環境をチェックすることなく、すべての組織にリリースできます。

コールアウト定義から指定ログイン情報を参照するには、指定ログイン情報 URL を使用します。指定ログイン情報 URL にはスキーム callout:、指定ログイン情報の名前、必要に応じて追加されたパスが含まれます。例: callout:My_Named_Credential/some_path

クエリ文字列を指定ログイン情報 URL に追加できます。指定ログイン情報 URL とクエリ文字列の間の区切り文字として疑問符 (?) を使用します。たとえば、callout:My_Named_Credential/some_path?format=json です。

次の Apex コードでは、指定ログイン情報と追加されたパスによってコールアウトのエンドポイントが指定されます。
1HttpRequest req = new HttpRequest();
2req.setEndpoint('callout:My_Named_Credential/some_path');
3req.setMethod('GET');
4Http http = new Http();
5HTTPResponse res = http.send(req);
6System.debug(res.getBody());
参照される指定ログイン情報では、エンドポイント URL と、認証設定を指定する外部ログイン情報が指定されます。
指定ログイン情報詳細ページ

どの認証を使用しても Apex コードは同じままです。外部ログイン情報の認証設定は異なります。これは組織で定義されている認証プロバイダーを参照するためです。

OAuth オプションを使用する指定ログイン情報の認証設定

次に、指定ログイン情報を使用しない Apex コードがどうなるかを見てみましょう。基本的なパスワード認証を使用していても、コードの認証処理はより複雑になっています。OAuth のコーディングはさらに複雑になるため、指定ログイン情報には最適な使用事例です。

1HttpRequest req = new HttpRequest();
2req.setEndpoint('https://my_endpoint.example.com/some_path');
3req.setMethod('GET');
4
5// Because we didn't set the endpoint as a named credential, 
6// our code has to specify:
7// - The required username and password to access the endpoint
8// - The header and header information
9 
10String username = 'myname';
11String password = 'mypwd';
12  
13Blob headerValue = Blob.valueOf(username + ':' + password);
14String authorizationHeader = 'BASIC ' +
15EncodingUtil.base64Encode(headerValue);
16req.setHeader('Authorization', authorizationHeader);
17   
18// Create a new http object to send the request object
19// A response object is generated as a result of the request  
20  
21Http http = new Http();
22HTTPResponse res = http.send(req);
23System.debug(res.getBody());