Salesforce托管字段权限问题:REST API插入conference360__Event__c记录失败
解决REST API插入conference360__Event__c记录的权限错误问题
检查API用户的字段与对象权限
虽为托管字段,仍需确保API调用用户拥有以下权限:conference360__Event__c对象的创建、读取权限conference360__Event_Start_Date__c、conference360__Event_Start_Time__c、conference360__Event_End_Date__c、conference360__Event_End_Time__c四个字段的读/写权限
操作路径:设置 → 对象和字段 → 对象管理器 → 找到conference360__Event__c→ 字段与关系,逐个检查四个字段的权限配置,在用户所属Profile或权限集中开启对应权限。
分配托管包专属权限集
部分托管包会提供配套权限集,确保API用户被分配了conference360相关的权限集。
操作路径:设置 → 权限 → 权限集,筛选前缀为conference360的权限集,将其分配给API调用用户。排查触发器依赖的其他字段权限
错误根源是触发器conference360.Event_Trigger执行查询时权限不足,大概率是触发器内部查询了其他未授权的字段/对象,而非你赋值的四个时间字段。
操作路径:设置 → 自定义代码 → 触发器,查看该触发器关联的对象,给API用户补充对应对象/字段的读权限。临时停用关联流程(应急方案)
如果流程“Event & Case Creation from Room Booking”并非插入记录的必需环节,可临时停用该流程,完成插入后再启用。
操作路径:设置 → 自动化 → 流程构建器,找到目标流程,切换为“停用”状态。用无共享Apex类封装插入逻辑
若上述配置仍无法解决,可编写without sharing修饰的Apex REST类,绕过共享权限检查执行插入:@RestResource(urlMapping='/InsertConferenceEvent/*') global without sharing class InsertConferenceEvent { @HttpPost global static Id insertEvent(String eventName, Date startDate, Time startTime, Date endDate, Time endTime) { conference360__Event__c newEvent = new conference360__Event__c( Name = eventName, conference360__Event_Start_Date__c = startDate, conference360__Event_Start_Time__c = startTime, conference360__Event_End_Date__c = endDate, conference360__Event_End_Time__c = endTime ); insert newEvent; return newEvent.Id; } }部署该类后,通过REST API调用这个自定义端点完成插入,而非直接操作
conference360__Event__c对象。
内容的提问来源于stack exchange,提问作者curious1
相关产品推荐
相关产品推荐

