2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ContentVersion、ContentDocumentLinkで困ったら・・・INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY : [NetworkId][LinkedEntityId]

Posted at

とりあえず走り書き(気が向いたら綺麗にまとめるかもしれないし、このままかもしれない・・・)。

Apexを使用してカスタムRestAPIを作成する仕事をしましたが、ファイルアップロードでかなり行き詰ったところがあるので忘備録として残しておきます。

エラーの経緯とやったこと

ファイルアップロードするときはContentVersionやContentDocumentLinkを使用しますが、以下のエラーが発生してなかなか上手くすすみませんでした。

Insert failed. First exception on row 0; first error: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, [LinkedEntityId]

ちょーざっくり訳でレコード作成失敗したよ、アクセス権が不十分だよ[LinkedEntityId]

みたいなこといっていますが、共有設定の見直しやLinkedEntityIdにかかわるオブジェクトのContentDocumentLinkで項目レベルセキュリティ、挙句の果てにプロファイル内の設定もしらみつぶしに探してみても解消できそうな設定はないんです(´・ω・`)(この調査だけで何日もかかっています)

ContentVersionTriggerHandlerでエラーが起こっていて、ファイルアップロード時に別ユーザに共有しようとしたときに発生しています。またファイルアップロードしたユーザがサイトコミュニティユーザ(外部ユーザ)で、Salesforceユーザ(内部ユーザ)に共有したときにエラーが発生しました。またSalesforceユーザから別のSalesforceユーザに共有するときは何もエラーは起きず正常にファイルの共有ができるという不思議・・・

さて一体何が問題だったんでしょう・・・

対処1.外部ユーザの場合、ContentVersionTriggerHandlerのInsert部分の処理を飛ばす

これで問題ないならとても簡単です。でもだいたいファイルアップロードしたときはどんなときでもファイル共有しなくてはいけないなら、これではダメです。

対処2.Experience Cloud サイトのメンバーに共有したいプロファイルを追加する

どうりでなかなかエラーが解消できなかったわけです(サポートに問い合わせても数日かかった回答です)。
デジタルエクスペリエンスから対象サイトをクリックしてメンバー追加するだけということです。

外部ユーザから内部ユーザにファイルを共有する際はメンバーに追加しないとだめで、このせいで権限がないよといっているようです。とてもわかりにくい・・・

あとは正しいURLで実行すればRestAPIとしてファイルアップロードが機能し外部ユーザからのアップロードしたファイルを内部ユーザへ共有することができますが、もし次のエラーが発生した場合は嫌になるでしょう。

INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY : [NetworkId]

いますぐ仕事を投げ出したい気分になりますが、次の対処法があります。

対処3.ファイルアップロード時はサイト名を必ず含める

上記エラーはサイト名を含めると正常に機能します。

つまり
×:(instance)/apexrest/(Apexクラス名)/・・・
〇:(instance)/(サイト名)/apexrest/(Apexクラス名)/・・・
というわけです。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?