Salesforce 错误 - “无效的交叉引用 ID”
Posted
技术标签:
【中文标题】Salesforce 错误 - “无效的交叉引用 ID”【英文标题】:Salesforce error - "invalid cross reference id" 【发布时间】:2012-02-15 06:44:39 【问题描述】:我正在使用 OmniAuth、OmniAuth-salesforce 和这个 gem 开发一个 Rails 应用程序:https://github.com/heroku/databasedotcom
我将“client_id”和“client_secret”硬编码到我的应用程序中。然后,对于通过 Saleforce 进行身份验证的每个用户,我将捕获他们的 oauth 令牌、用户 ID 和实例 url。有了这一切,我正在代表他们创建潜在客户。
如果用户来自我获得“client_id”和“client_secret”的同一个帐户,则一切正常。但是,如果我与来自另一个 Salesforce 实例的用户进行身份验证,我会收到“无效的交叉引用 id”错误。
我希望我的应用程序为来自许多不同 Salesforce 实例的用户提交潜在客户。这不可能吗?
这是我的完整代码:
client = Databasedotcom::Client.new :client_id => SALESFORCE_CLIENT_ID, :client_secret => SALESFORCE_CLIENT_SECRET
client.authenticate :token => user.salesforce_token, :instance_url => user.salesforce_instance_url
client.materialize("Lead")
lead = Lead.new(:FirstName => first_name, :LastName => last_name, :Email => email,
:Phone => phone, :OwnerId => user.salesforce_id, :IsConverted => false,
:IsUnreadByOwner => true, :Company => contact_company)
lead.save
感谢您的建议!
【问题讨论】:
您要访问的 URL 是什么? @Matt,我面临着完全相同的问题,你能告诉我你是如何解决这个问题的吗?我正在使用 oauth2 gem 获取令牌,然后使用您编写的相同程序 @LaceySnr 我面临同样的问题,我正在点击login.salesforce.com/services/oauth2/authorize进行身份验证 【参考方案1】:错误将来自您为 ownerId 设置的 user.salesforce_id 引用,并导致我认为您以某种方式混合了数据,即您发送 user1 但发送到 user2 的会话。我没有使用您提到的 gem,但是从代码中,我看不到领先实例如何与特定的客户端实例相关联。 Lead.save 是如何知道使用您刚刚创建的客户端实例的?
详细了解 materialize("Lead") 的工作原理,似乎 Lead.new 总是会创建与您创建的第一个客户端实例相关联的潜在客户,因此您会尝试发送所有潜在客户您验证的第一个用户。
【讨论】:
以上是关于Salesforce 错误 - “无效的交叉引用 ID”的主要内容,如果未能解决你的问题,请参考以下文章
Salesforce - 对象UserRecordAccess上的SOQL查询语法错误
Apex Scheduler Salesforce,执行错误