yoomを使ってSalesforceのSandboxと連携してみる


 + [YoomとSalesforceの連携　 INVALID_SESSION_ID](https://qiita.com/Keiji_otsubo/items/ffa569a8953e505868fb)


ログイン先がよく分からんので... http://yoom.fun/
[料金プラン](https://lp.yoom.fun/plan)

# マイアプリ登録とSalesforce側の設定変更

早速騙されました。先が思いやられます。MSさんのマニュアルと同じ臭いがしますねぇ。できたら使いたくないなぁ。

[Salesforceのマイアプリ登録方法](https://intercom.help/yoom/ja/articles/5500095-salesforce%E3%81%AE%E3%83%9E%E3%82%A4%E3%82%A2%E3%83%97%E3%83%AA%E7%99%BB%E9%8C%B2%E6%96%B9%E6%B3%95)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3f456ca7-72fc-9696-b693-fd4385f956a2.png)

しかし、Settingにはありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9aaffbc6-a171-7120-3fc4-10142ba2502c.png)

何故かこっちの画面にある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f847614f-bd28-f48d-bde0-d58839334f60.png)

ログイン先のURLが違うので本番環境とSandboxではボタンがそれぞれ作ってあるなぁ。
はじめは気付かなかったので、手動でログイン先を変えるしかないと思ってました...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/675cbcec-696d-0d69-5e44-1140d9aad6ac.png)

登録できたようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/0cbd7eab-95ae-edc3-dc71-56b853c61a53.png)

Salesforce側も設定変更が必要みたい。

これは、管理者で１度行えばいい。（しかし、この設定はダメなのでは？後日エラーの嵐になる）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/30fb4155-ddff-d162-4e86-436480b1e063.png)

# まずは接続できるかを確認しましょう

使い方がいま一つよく分からないです。マイアプリを作ったのにどこから呼び出せば...

データベースを操作すると選ぶとマイアプリは出てきません。本番環境にしか接続できない感じです。
もっとも、フリープランでは使えません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f6f4af4f-0d9a-9088-c8d6-66db31de49fc.png)




どうもアプリと接続するみたい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/eb8079cb-1457-99bc-0629-a8618d347c1d.png)


アプリでもフリープランでは本番環境とは繋がりませんね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/07a964f8-1d65-5f0b-434e-952c7be1812d.png)



こんな感じで設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a8ba2a08-80d9-20d7-b150-6299af637f6a.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/9bac2a04-5137-ef80-8285-72c862529fbe.png)

結果は以下の通り。
REST APIみたいですね。v52.0って... 古いなぁ。メンテされて無さそう。気を付けないとバージョンが古くてうまくいかないことがありそうだ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e499bd9e-bcad-4f64-2221-02525789e01a.png)


OAuth アプリケーションとして接続しているようですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/76e70ec2-0550-24fb-fc2b-ce881c715824.png)


Lightning Experience アプリケーションマネージャーにはないけど... 接続アプリケーションの OAuth の利用状況にはYoomがありますね。

# 更新を試してみようか...

ということで、フローボットを新規追加してみると...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/54e23ef5-b5af-2900-cf25-e74d37f544c3.png)

あちゃぁ、これではフローボットを増やせませんね。

更新するオブジェクトには連携用のカスタムオブジェクトを作ってフローを咬ます？
しかし、単にREST API使っているだけなら、curlコマンドとかPostman経由で連携した方が早そうだな


料金プランを見たら...
ああフローロボット数に制限がある。あっ、ステップ数にも制限が... MSのPower Automateの上を行くひどい制限かもしれませんね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/7816de7e-2a66-6390-24b7-ee7d55359b7a.png)


気を取り直して今作った取得を更新に変更してみます。

あああああ、やっぱりIDが必須みたい。
それに更新できる項目に制限がある。カスタム項目はダメじゃん。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/44106f51-fb5c-c60e-2ba4-73bf0ffd0467.png)


# 次の日にもう一度...

あっれ、何で？　ログイン履歴を見ても何もないな。

```
[
  {
    "message": "Session expired or invalid",
    "errorCode": "INVALID_SESSION_ID"
  }
]
```

削除して作り直してもエラーですね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ff0bbe86-e69c-079c-f924-65d7ec4b2ad4.png)

接続履歴を見ると問題なさそうですが...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8a0d6e99-d61a-a3ac-7508-f280035299db.png)

以下の設定を試してみましたが、エラーのままですね。

+ [REST API 使用時の「INVALID_SESSION_ID」エラー](https://help.salesforce.com/s/articleView?id=000387018&type=1)

更新トークン連発しているし、繋がらないのではやり使えない可能性大ですね。
一番初めだけはトークンが更新でなかったので、繋がったのかもしれません。

よくわからんけど、再々作成したらエラーが出なくなりました。

読み取る項目は選べそう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/43bfd55c-bc71-3d44-0089-e531dc3831ce.png)

しかし、再テストしたらエラーですね。これでは使い物になりません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/bf2897ad-8690-b95d-3c1d-0a47faa95d74.png)


ログを見ると毎回接続しているIPアドレスが変わっています。
更新トークンの時に失敗している感じがします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/ed28198a-9622-6845-6197-94a2f9c046f4.png)

正直なところSalesforceの更新トークンは機能しているか信用できませんね。だいたい更新トークンでエラーになるとお手上げです。何が悪いのかさっぱり分かりません。

以下のヘルプも読んでも意味が分からん

+ [更新セッションの OAuth 2.0 更新トークンフロー](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_refresh_token_flow.htm&type=5)


lightning.force.comを使わずにmy.salesforce.comを使えばいいとあるけど、今回はmy.salesforce.comを使っている。エンドポイントにインスタンスで取得できたものを使えばいいはずだけど...

https://salesforce.stackexchange.com/questions/325608/invalid-session-id-using-rest-api-through-postman


更新トークンの間は全てエラーです。アクセスしてくるIPアドレスは毎回違います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3383b4d1-bc05-e21b-5e42-532a588a81f1.png)


何回もyoomでテストをしていますが、途中からSalesforceのログイン履歴にすら出なくなりました。
「すべての要求でログイン IP アドレスの制限を適用」をオフにしたからだな。戻すとテストは成功でしたが、更新トークンですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/eb820416-51bf-0447-9e37-2b36c2e1e506.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/6c0f4461-2fde-6b89-6038-cc2fcfd4ea95.png)

おお再テストもできた。

ログインのところは変わらないですが、使用回数は増えています。嘘でした、Idを変えても増えません。何で？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b97da27b-eb9e-aaf8-e191-afb154463045.png)


「ログイン時の IP アドレスとセッションをロックする」　にチェックを入れても成功してます。

「すべての要求でログイン IP アドレスの制限を適用」がオンが重要なのかも...

オフにしても機能します、理由がさっぱり分かりません。

「すべての要求でログイン IP アドレスの制限を適用」がオンにしたらまたエラーです。

組み合わせか？
「すべての要求でログイン IP アドレスの制限を適用」がオン
「ログイン時の IP アドレスとセッションをロックする」をオフ

関係ないみたいです。一度エラーになったら当分エラーのままです。

本当に使えないツールです。

# どの設定が正しいのか？

全く理解できませんでした。気分で変わるんだろうな、きっと。


# 接続アプリケーションの設定

+ ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a187bc34-11e6-0b7b-45ae-26a9e38d893c.png)

+ [接続アプリケーションの IP 制限の緩和および IP の継続的な適用](https://help.salesforce.com/s/articleView?id=sf.connected_app_continuous_ip.htm&type=5)

+ IP 制限は、ユーザーのプロファイルで設定されている場合にのみ適用されます。SAML ベアラーアサーションフローと JWT ベアラートークンフローでは、接続アプリケーションポリシーに関係なく、常に IP 制限が適用されます。

+ IP 制限を適用し、更新トークン使用時に緩和


セキュリティ上の理由で、接続アプリケーションの IP 制限を緩和し、組織が [すべての要求でログイン IP アドレスの制限を適用] を有効にしている場合、ユーザーは一部の状況でアプリケーションにアクセスできません。このアクセス制限は、モバイルデバイスを含め、すべての OAuth 対応接続アプリケーションに適用されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/5ebedd49-2033-d5c9-30fd-5cfcea9bccd3.png)


IP の継続的な適用が有効の場合

このアプリケーションを実行しているユーザーには、初回ログイン時にユーザーのプロファイルで設定された IP 範囲など、組織の IP 制限が適用されます。これらの制限は、後でアプリケーションが更新トークンを使用して新しいアクセストークンを取得するときに緩和されます。ただし、セキュリティ上の理由により、ユーザーは以下の操作ができません。

+ パスワードの変更
+ 検証方法の登録
+ ログインフローでのページへのアクセス

# 更新してみた

最終更新日が変わっているので、更新はできていると思うけど、nullが返ってきますね。変な仕様です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/d9dd70bf-f95b-ea58-06d0-82889dd0f5dc.png)

カスタムオブジェクトではないけど、取引先を強制的に設定したら、カスタム項目も更新できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/3e32cb9a-fca9-241f-37a0-c28e9821f960.png)


# 2024/10/24 久しぶりにSandboxに接続するもエラーでできません。

やっぱり、使えないですね。使いものになりませんな。接続情報の現状も分からんし、更新でもできませんね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/08e14ae6-6a7c-4d47-32d7-bf7b022b804c.png)