0

我正在使用 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

感谢您的任何建议!

4

1 回答 1

0

错误将来自您为 ownerId 设置的 user.salesforce_id 引用,并导致我认为您以某种方式混合了数据,即您发送 user1 但发送到 user2 的会话。我没有使用您提到的 gem,但是从代码中,我看不到领先实例如何与特定的客户端实例相关联。Lead.save 如何知道使用您刚刚创建的客户端实例?

详细了解 materialize("Lead") 的工作原理,似乎 Lead.new 总是会创建与您创建的第一个客户端实例相关联的潜在客户,因此您将尝试将所有潜在客户发送给第一个用户您进行身份验证。

于 2012-01-21T01:55:08.030 回答