3
2

More than 1 year has passed since last update.

【Salesforse】【Apex】指定ログイン情報の設定方法とエラー

Last updated at Posted at 2023-09-04

Salesforseから外部サービスをコールアウトする案件がいくつか続き
指定ログイン情報の知見がたまったので設定方法とよくあるエラーをまとめました!

※旧の指定ログイン情報は非推奨となっているため、当記事ではWinter '23にリリースされた新の指定ログイン情報についての内容となります。

※プロファイルでの権限付与は廃止される予定なので、権限セットで権限付与する方法で記載しています。

指定ログイン情報とは?

Apexでエンドポイントとかヘッダーとかごにょごにょ書かないで設定に外出ししよ。ってやつです。
コード見せたほうが早いのでサンプルをば

指定ログイン情報なし
HttpRequest req = new HttpRequest();
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept', 'application/xml');
req.setEndpoint('https://piepie-sample.com/api/v1/data');
req.setMethod('POST');
req.setBody('{"aaa":"bbbbbb"}');
HttpResponse res = new Http().send(req);
指定ログイン情報あり
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:piepie');
req.setMethod('POST');
req.setBody('{"aaa":"bbbbbb"}');
HttpResponse res = new Http().send(req);

指定ログイン情報なしの2~4行目が req.setEndpoint('callout:piepie'); の1行になります。
URLや認証情報をハードコードしないので管理しやすいですね。

指定ログイン情報の設定方法

1.外部ログイン情報の作成

設定で「指定ログイン情報」の画面を開き、外部ログイン情報を作成する
image.png

プリンシパルを作成する
image.png
image.png

setHeader()にあたる部分はカスタムヘッダーに登録する
image.png

2.指定ログイン情報の作成

設定で「指定ログイン情報」の画面を開き、指定ログイン情報を作成する
1で作成した外部ログイン情報を設定する
image.png

3.コーディング

setEndpoint()の引数は 'callout:★★★' のようにする。
★★★は2で設定した名前を入れるが大文字と小文字を区別するらしいので注意。
また、以下のように文字列連結も可能

req.setEndpoint('callout:piepie' + '/piepie');

4.権限セットの作成とユーザへの割り当て

設定で「権限セット」の画面を開き、権限セットを作成する
image.png

外部ログイン情報プリンシパルアクセスを追加する
image.png

標準オブジェクトのユーザの外部ログイン情報の参照権限を付与する
image.png

その他、このコールアウトをする機能(オブジェクト・Apex・VF)の権限一式をこの権限セットに入れるのもおすすめです。

やらなくていいこと「リモートサイトの設定」

外部連携といえば「リモートサイトの設定」ですが、指定ログイン情報を使用する場合は不要です。

よくあるエラー

設定は済んだのでいざ実行!ってしてみたら、なんかエラーになっちゃったシリーズ
検索してもなかなか出てこなかったのでメモしておきます(*'ω'*)

We couldn't access the credential(s). You might not have the required permissions, or the external credential "piepie_ext" might not exist.

原因
・権限セットがユーザに割り当てられていない
・権限セットに外部ログイン情報プリンシパルアクセスが追加されていない

The callout couldn't access the endpoint. You might not have the required permissions, or the named credential "piepie" might not exist.

原因
・権限セットに標準オブジェクト「ユーザの外部ログイン情報」の権限が付与されていない
 →シス管には付与されているのでテストまで気づかないことがあり、、

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2