2013-03-09 155 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