Salesforce Tooling API - 访问权限不足

时间:2013-03-09 01:34:59

标签: api salesforce

我正在尝试通过Tooling API创建触发器。这是在Salesforce中执行的,并在同一Salesforce组织上执行。这是在开发组织中完成的,正在运行的用户是管理员。

当我创建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"}

发送到

的网址
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}"}

发送给它的网址:

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"}]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我只是通过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?