通过 Salesforce API 获取读取权限或安全相关对象

Posted

技术标签:

【中文标题】通过 Salesforce API 获取读取权限或安全相关对象【英文标题】:Get read permissions or security related objects via salesforce API 【发布时间】:2014-07-23 06:02:46 【问题描述】:

我计划通过以下查询获得对象的读取权限,

queryResults = connection.query("SELECT Assignee.Id, Assignee.Name" +
      " FROM PermissionSetAssignment" +
      " WHERE PermissionSetId" +
      " IN (SELECT ParentId" +
      " FROM ObjectPermissions" +
      " WHERE SObjectType = GivenObjectType AND" +
      " PermissionsRead = true)");

这适用于大多数 salesforce 对象。但是对于安全相关的对象,例如组、配置文件,这不起作用。 (即,当我要检查可以看到用户信息的用户时,我应该能够通过 GivenObjectType="User" 并获取所有可以看到其他用户信息的用户。

有什么方法可以实现吗?

注意:我发现以下对象类型在 ObjectPermissions.SObjectType 中不支持 用户、组、合作伙伴、配置文件和任务(不是安全相关对象)

谢谢!

【问题讨论】:

【参考方案1】:

编辑以回复评论

配置文件/权限集仅说明是否允许您查看、编辑等帐户完全。他们不会告诉您是否可以编辑帐户“XYZ”。

那么您应该查看AccountShareUserRecordAccess 表。它们会为您提供很好的扁平化信息,而不是尝试重新创建共享规则。

查看 Daniel 对 https://salesforce.stackexchange.com/questions/7805/show-insufficient-privileges-directly-when-clicking-edit-override-not-on 的回答,应该会给您一个良好的开端,您就会知道现在要搜索哪些关键字。


原答案

对于像组这样的设置对象(也包括队列),您可能需要查看系统权限。我相信那个会被“Manage Users”控制。至少我的一些用户抱怨说,没有它,他们看不到谁实际上是给定队列的成员。访问用户对象可能是同一件事。

你应该可以在PermissionSet对象中找到它们。

我认为合作伙伴和任务处于主从关系中(分别对帐户和任何具有“允许活动”的对象......我认为)。再说一遍 - 我认为帮助是你最好的朋友:https://help.salesforce.com/HTViewHelpDoc?id=partners_edit.htm、https://help.salesforce.com/HTViewHelpDoc?id=creating_tasks.htm 等。

我很好奇你为什么需要它,以及为什么你坚持查询而不是使用描述调用,如“isAccessible”或元数据 API/工具 API,如果你想将它提取到 Java 应用程序。对个人资料和相关内容的查询最近才曝光,如果某些内容丢失/不一致,我不会感到惊讶。

【讨论】:

实际上我想获得所有可以看到特定对象实例的用户(一次)。即获取所有可以读取有关 myacount 信息的用户(帐户对象的实例)。如果我使用 isAccessible() ,那么我必须为系统中的每个用户多次调用该方法。

以上是关于通过 Salesforce API 获取读取权限或安全相关对象的主要内容,如果未能解决你的问题,请参考以下文章

Salesforce自定义权限简介

Apex 的 API 简介

如何通过 API 将自定义字段添加到 SalesForce 中的布局部分

是否可以将Amazon-Quicksight与salesforce集成[关闭]

salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)

Salesforce 开发整理权限共享