3

我在 salesforce 中创建了一个包,它将使用用户的电子邮件 ID 发出一个 http 标注请求,以获取该电子邮件的数据并将数据添加到某个自定义对象。但是当我尝试使用UserInfo.getUserEmail()作为请求参数时,它使用noreply@salesforce.com. 当我在开发帐户上运行它时它确实有效。我也尝试过使用

1.String userName = UserInfo.getUserName();
2.User activeUser = [Select Email From User where Username = : userName limit 1];
3.String userEmail = activeUser.Email;

但是第 2 行给了我一个错误说List has no rows for assignment to SObject

这是我的第一个 salesforce 软件包,因此将不胜感激。

4

2 回答 2

2

https://salesforce.stackexchange.com/questions/10413/userinfo-getuseremail-returns-noreplysalesforce-com-in-salesforce

这就是问题所在。丹尼尔回答得很好。对于遇到类似问题的人来说,这是因为计划的作业在他们的服务器上作为“幻像”进程运行。所以我们必须在使用 installhandler 或创建计划时为其提供 installedid。否则它不会对用户有任何了解。以某种方式保存installedid!

于 2013-04-07T18:53:56.237 回答
0
List has no rows for assignment to SObject

当没有找到行时返回。这不会解决问题,但最佳做法是将其分配给类似的列表

List<User> activeUsers = [Select Email From User where Username = : userName];
if(activeUsers.size() > 0)
  User activeUser = activeUsers[0]; 

http://wiki.developerforce.com/page/Apex_Code_Best_Practices

要解决您的问题,您运行查询的两次之间的配置文件可能因分配的权限不同而不同。如果您没有设置对用户对象的读取权限,您会收到这样的错误。

于 2013-04-07T05:16:12.753 回答