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 に答える