2012-01-20 30 views
0

私はOmniAuth、OmniAuth-Salesforceとこの宝石を使用してのRailsアプリを開発しています:https://github.com/heroku/databasedotcomSalesforceのエラー - 「無効な相互参照ID」

私は私のアプリの中へ「の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

@Matt、私はまったく同じ問題に直面しています。この問題をどのように解決したか教えてください。 oauth2 gemを使用してトークンを取得してから、書いた手続きと同じ手順を使用してください。 – RAJ

+0

@LaceySnr私は同じ問題に直面しています。認証にはhttps://login.salesforce.com/services/oauth2/authorize – RAJ

答えて

0

ownerIdに設定しているuser.salesforce_idの参照からエラーが発生し、何らかの形でデータが混ざっていると考えられます。つまり、user1を送信していますが、user2のセッションに送信しています。私は言及した宝石を使用していないが、コードから、私はどのようにリードインスタンスが特定のクライアントインスタンスに関連付けられているか見ることができません。 lead.saveは、作成したクライアントインスタンスの使用方法をどのように知っていますか?

materialize( "Lead")の仕組みをもっと見ると、Lead.newは作成した最初のクライアントインスタンスに関連付けられたリードを常に作成しているようです。あなたが認証した最初のユーザーにつながります。

関連する問題