我正在使用OmniAuth,OmniAuth-salesforce和这个宝石开发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
感谢您的任何建议!
答案 0 :(得分:0)
错误将来自您为ownerId设置的user.salesforce_id引用,并让我认为您以某种方式混合数据,即您发送user1但是发送到user2的会话。我没有使用你提到的gem,但是从代码中,我看不出lead实例如何与特定的客户端实例相关联。 lead.save如何知道您刚刚创建的客户端实例?
更多关注物化(“引导”)是如何工作的,看起来Lead.new总是会创建一个与您创建的第一个客户端实例相关联的潜在客户,因此您将尝试发送所有潜在客户您验证的第一个用户。