1

是否有任何可能的方法可以使用 SFDC 的 REST API 根据在 SFDC 中配置的可访问性规则来获取 SFDC 标准对象,例如客户、机会、联系人和潜在客户?如果是,那么我们如何准确地传递用户特定的详细信息以及传递连接应用程序的管理员用户访问密钥。

4

1 回答 1

0

因此,您希望以系统管理员身份单次登录 API,但运行由 Salesforce 过滤的查询,就好像用户 X 会询问一样,考虑组织范围的默认设置、共享规则等?

您可能想试验一下UserRecordAccess,比检查 AccountShare 表、遍历组等所有这些东西更简单。但您可能必须分两步完成。

这不起作用:

SELECT RecordId
FROM UserRecordAccess
WHERE UserId = '005700000012zKY' AND HasReadAccess = true
AND RecordId IN (SELECT Id FROM Account)

但这很有希望

Set<Id> ids = new Map<Id, Account>([SELECT Id FROM Account LIMIT 200]).keyset();

System.debug([SELECT RecordId
    FROM UserRecordAccess
    WHERE UserId = '005700000012zKY' AND HasReadAccess = true
    AND RecordId IN :ids
]);

(是的,有 200 条记录的限制)

如果这感觉太笨拙,最好的办法是在集成中真的没有管理员帐户,而是让人们通过您的应用程序登录到 SF 并“自然地”只获取/编辑他们可以看到的内容?对于当前用户UserRecordAccess可以直接在主查询中使用,select id, name, userrecordaccess.haseditaccess from account. 如果您有花哨的队列设置或区域,您甚至可以使用“范围”。

于 2022-02-08T22:12:12.707 回答