最近、Salesforceと連携していたWebサービスでAPIに連携できない問題が発生しました。
Salesforceを管理されている方からは「設定の変更をされていない」との事だったので、色々状況を調べることになりました。
解決策が見つかったので共有します。
もしかしたら他の問題の可能性もありますので、ご了承ください。
状況
toolkitを使用せずにスクラッチでAPIにリクエストしています。
下記のドメインからアクセストークンを取得しようとしました。
ベースURL:https://example.com.cs5.my.salesforce.com
アクセストークン取得時:https://example.com.cs5.my.salesforce.com/services/oauth2/token
curlでAPIにリクエストしたところ次のエラーが帰ってきました。
The URL has moved here
原因
APIのURLの仕様が変わったようです。
2020年に公開されたリリースノートで次のような事が書かれています。
URL からインスタンス名を削除することによるドメインを安定化させる取り組みの一環として、Sandbox の [私のドメイン] URL の形式が変更されます。
変更の対応例に次のように書かれており、インスタンス名(cs5)の部分を除いたURLにする必要がありました。
変更前 | 変更後 |
---|---|
mydomain--SandboxName.cs5.my.salesforce.com | mydomain--sandboxname.my.salesforce.com |
mydomain--c.cs5.visual.force.com | mydomain--c.visualforce.com |
mydomain--c.cs5.content.force.com | mydomain--c.documentforce.com |
releasenotes.docs.salesforce.com
次のように変更する事でアクセスする事ができます。
また、前項のエラーを出力してみると新しいドメインを確認する事もできます。
変更前:https://example.com.cs5.my.salesforce.com
変更後:https://example.com.my.salesforce.com
インスタンス名とは何か?
salesforceはデータセンター毎にインスタンスを設定しているようです。
APIに設定していた、cs5
というのは、神戸、日本/東京、日本のデータセンターから取得する事を指しています。