SOQL 查询没有 return Salesforce 联系人
SOQL query does not return a Salesforce contact
我有一个查询 Salesforce 联系人的功能。一般来说,它有效。但现在我需要查询与测试帐户关联的新创建的测试联系人。我在 Salesforce 中创建了两个,但由于某种原因找不到联系人。与现有帐户和联系人相比,我无法弄清楚我可能缺少什么。也许有人可以告诉我应该看什么?
代码如下:
private List<Contact> GetContactInfoByEmail(string email, ILogger log)
{
string queryMessage = $"SELECT Id, Contact.Account.Name, Contact.Account.Type, Contact.Account.Address_Number__c, Contact.Account.MVP_ID__c, Pricebook_Authorized__c, Portal_Authorized__c FROM Contact WHERE Email = '{email}'";
JObject obj = JObject.Parse(QueryRecord(_httpClient, queryMessage, log));
Console.WriteLine(obj["records"]);
List<Contact> contacts = obj["records"].ToObject<List<Contact>>();
return contacts;
}
private string QueryRecord(HttpClient client, string queryMessage, ILogger log)
{
string restQuery = $"{_sfServiceUrl}{ApiEndpoint}query?q={queryMessage}";
log.LogInformation($"restQuery: {restQuery}");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, restQuery);
request.Headers.Add("Authorization", "Bearer " + _sfAuthToken);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.SendAsync(request).Result;
return response.Content.ReadAsStringAsync().Result;
}
查询在 Salesforce 开发人员控制台中是否正常,您确定电子邮件中没有错别字吗?
C# 连接用户是系统管理员吗?也许该联系人在数据库中是正确的,但由于“共享规则”未使其对您的 API 用户可见而未返回。帐户和联系人所有者是否在 SF 设置中指定了“角色”?
编辑 回复评论。
查看拥有 Account/Contact 的用户。转到设置并在设置的顶部搜索中搜索此用户。然后
一般来说,这听起来像是一个共享问题。您将需要管理员的帮助。您可以查看“设置”->“共享设置”并找出使此联系人对连接用户可见所需的条件。可能缺少角色(向所有者添加角色或将所有者更改为其他人),可能是您没有填充“共享规则”中使用的字段。顺丰安全“谁能看到什么”是个大话题。如果您喜欢冒险,可以参加 self-paced 培训,例如 https://trailhead.salesforce.com/en/content/learn/modules/data_security/data_security_records?trail_id=force_com_admin_intermediate(这是更大“足迹”中的第 5 课,所以可能从第 1 课开始)
P.S。这很愚蠢,但我不得不问。您确定您的程序连接到正确的 Salesforce 组织吗?您可以检查登录用户的登录历史记录(在设置中找到该用户,然后一直向下滚动)
我有一个查询 Salesforce 联系人的功能。一般来说,它有效。但现在我需要查询与测试帐户关联的新创建的测试联系人。我在 Salesforce 中创建了两个,但由于某种原因找不到联系人。与现有帐户和联系人相比,我无法弄清楚我可能缺少什么。也许有人可以告诉我应该看什么?
代码如下:
private List<Contact> GetContactInfoByEmail(string email, ILogger log)
{
string queryMessage = $"SELECT Id, Contact.Account.Name, Contact.Account.Type, Contact.Account.Address_Number__c, Contact.Account.MVP_ID__c, Pricebook_Authorized__c, Portal_Authorized__c FROM Contact WHERE Email = '{email}'";
JObject obj = JObject.Parse(QueryRecord(_httpClient, queryMessage, log));
Console.WriteLine(obj["records"]);
List<Contact> contacts = obj["records"].ToObject<List<Contact>>();
return contacts;
}
private string QueryRecord(HttpClient client, string queryMessage, ILogger log)
{
string restQuery = $"{_sfServiceUrl}{ApiEndpoint}query?q={queryMessage}";
log.LogInformation($"restQuery: {restQuery}");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, restQuery);
request.Headers.Add("Authorization", "Bearer " + _sfAuthToken);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.SendAsync(request).Result;
return response.Content.ReadAsStringAsync().Result;
}
查询在 Salesforce 开发人员控制台中是否正常,您确定电子邮件中没有错别字吗?
C# 连接用户是系统管理员吗?也许该联系人在数据库中是正确的,但由于“共享规则”未使其对您的 API 用户可见而未返回。帐户和联系人所有者是否在 SF 设置中指定了“角色”?
编辑 回复评论。
查看拥有 Account/Contact 的用户。转到设置并在设置的顶部搜索中搜索此用户。然后
一般来说,这听起来像是一个共享问题。您将需要管理员的帮助。您可以查看“设置”->“共享设置”并找出使此联系人对连接用户可见所需的条件。可能缺少角色(向所有者添加角色或将所有者更改为其他人),可能是您没有填充“共享规则”中使用的字段。顺丰安全“谁能看到什么”是个大话题。如果您喜欢冒险,可以参加 self-paced 培训,例如 https://trailhead.salesforce.com/en/content/learn/modules/data_security/data_security_records?trail_id=force_com_admin_intermediate(这是更大“足迹”中的第 5 课,所以可能从第 1 课开始)
P.S。这很愚蠢,但我不得不问。您确定您的程序连接到正确的 Salesforce 组织吗?您可以检查登录用户的登录历史记录(在设置中找到该用户,然后一直向下滚动)