2013-03-09 67 views
2

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

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

{"MetadataContainerId":"1dcG0000000PAwZIAW","Body":"trigger TestTrg1 on Account (after insert, after update, before insert, before update) {\n\n}"} 

的URL它被发送到JSON:

​​

响应:

[{"fields":[],"message":"insufficient access rights on cross-reference id","errorCode":"INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY"}] 

任何帮助是极大的赞赏。

回答

1

我只是尝试了相同的事情,但通过SOAP版本的Tooling API。

如果我将ApexTriggerMember.ContentEntityId指定为现有的触发器ID(键前缀01q),它工作正常。当然,这是更新现有的触发器,而不是创建新的触发器。

如果我没有设置ContentEntityId,我会得到与您完全相同的错误。 “交叉引用ID访问权限不足”(StatusCode.INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY)

documentation说(我的重点):

ContentEntityId
Type: reference
Properties: Create, Filter, Group, Sort
Description:
A reference to an Apex trigger. There can be only one ContentEntityId per ApexTriggerMember, otherwise, an error is reported. This field is required.

等等领域是必需的,但我们没有指派的id它尚未...

注意,我问过在专用的Salesforce StackExchange类似的问题 - How do I use the Tooling API to create a new Apex Trigger?

+0

非常感谢你。通过测试,我相信工具API不适用于创建。如果这是错的,我希望有人能提供更多的细节。在这一点上,我们将把所有注意力都转移到元数据API上来解决问题。再次感谢您的帮助。 – alockrem 2013-03-19 13:13:05