我正在尝试通过Tooling API创建触发器。这是在Salesforce中执行的,并在相同的Salesforce org上执行。这是在一个开发组织中完成的,并且运行的用户是管理员。
当我创建MetadataContainer时,它会按预期工作。当我创建ApexTriggerMember时,出现以下错误:
INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY以下是该过程的一些调试过程:
The JSON that is sent to create the MetadataContainer
{"Name":"Container 2013-03-08 17:28:06"}它被发送到的URL
https://na11.salesforce.com/services/data/v27.0/tooling/sobjects/MetadataContainer/回应:
{"id":"1dcG0000000PAwZIAW","success":true,"errors":[]}发送来创建ApexTriggerMember的JSON
{"MetadataContainerId":"1dcG0000000PAwZIAW","Body":"trigger TestTrg1 on Account (after insert, after update, before insert, before update) {\n\n}"}它被发送到的URL:
https://na11.salesforce.com/services/data/v27.0/tooling/sobjects/ApexTriggerMember/回应:
[{"fields":[],"message":"insufficient access rights on cross-reference id","errorCode":"INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY"}]任何帮助都是非常感谢的。
发布于 2013-03-15 09:43:41
我只是通过Tooling API的SOAP版本进行了同样的尝试。
如果我将ApexTriggerMember.ContentEntityId指定为现有的触发器Id (键前缀01q),它可以很好地工作。当然,这是更新现有的触发器,而不是创建新的触发器。
如果我没有设置ContentEntityId,我会得到和你完全一样的错误。“对交叉引用id的访问权限不足”(StatusCode.INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY)
documentation说(我强调的):
ContentEntityId
类型:引用
属性:创建、筛选、分组、排序
描述:
对Apex触发器的引用。每个ApexTriggerMember只能有一个ContentEntityId,否则将报告错误。此字段为必填字段。
所以这个字段是必填的,但是我们还没有分配给它的Id ...
请注意,我在专门的Salesforce StackExchange - How do I use the Tooling API to create a new Apex Trigger?上也问过类似的问题
https://stackoverflow.com/questions/15306170
复制相似问题