2012-01-20 35 views
0

我正在開發使用OmniAuth,OmniAuth,銷售人員這種寶石一個Rails應用程序和:https://github.com/heroku/databasedotcomSalesforce的錯誤 - 「無效的交叉引用id爲」

我硬編碼「的client_id」和「client_secret」到我的應用程序。然後,對於使用Saleforce進行身份驗證的每個用戶,我都會捕獲他們的oauth標記,用戶標識和實例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

什麼是您要驗證的URL? –

+0

@Matt,我面對完全相同的問題,你能告訴我你是如何解決這個問題的?我正在使用oauth2 gem獲取令牌,然後使用您編寫的相同過程 – RAJ

+0

@LaceySnr我面臨同樣的問題,並且對於身份驗證我打了https://login.salesforce.com/services/oauth2/authorize – RAJ

回答

0

該錯誤將來自您爲ownerId設置的user.salesforce_id引用,並且導致我認爲您以某種方式混合了數據,即您將user1發送給user2的會話。我沒有使用你提到的gem,但是從代碼中,我看不到主導實例如何與特定的客戶端實例相關聯。 lead.save如何知道使用您剛創建的客戶端實例?

查看更多物化(「Lead」)的工作方式,似乎Lead.new總是會創建與您創建的第一個客戶端實例關聯的線索,因此您會嘗試將所有領導您認證的第一位用戶。