2016-01-26 29 views
0

我無法按照https://github.com/heroku/simple-salesforce中的指南將會話ID信息傳遞給請求。看起來我可以進行身份​​驗證,但是當我嘗試使用API​​查詢時,它會給我一個'INVALID_SESSION_ID'。我不確定我在這裏錯過了什麼,我認爲這可能是因爲我對API的理解不夠。將簡單銷售團隊的會話ID傳遞給請求

任何幫助表示讚賞。

from simple_salesforce import Salesforce 
import requests 


session = requests.Session() 
sf = Salesforce(instance='test.salesforce.com',session_id = '') 
sf = Salesforce(username=username, password=password, security_token=security_token,session=session,sandbox=True) 
response = session.get('https://test.salesforce.com/a4Z/o') #Returns a HTTP code 200 
response = session.get('https://test.salesforce.com/services/data/v34.0/sobjects') #Returns a HTTP code 401 
session.cookies.clear() 

回答

0

我對這個lib不太瞭解,但是你似乎覆蓋了sf變量的實例。例如,如果你只是這樣做:

import requests 
session = requests.Session() 
response = session.get('https://test.salesforce.com/a4Z/o') 

你會得到一個200,因爲它是一個開放的測試REST服務。

你也不能對銷售人員()對象把......作爲一個例子創造任何價值,看看使用的用戶名和密碼進行身份驗證的lib作者的更多羽翼豐滿例如:

from simple_salesforce import Salesforce 
import requests 

session = requests.Session() 
# manipulate the session instance (optional) 
sf = Salesforce(
    username='[email protected]', password='password', organizationId='OrgId', 
    session=session) 

顯然,這些是json的測試值,而不是實際的用戶名和值。您需要傳遞有效的用戶名和密碼才能使其發揮作用。

如果我是你,我會離開你的sf變量的第一個實例,把有效值放在第二個,然後再試一次。

0

你的instance論點是這裏看來是什麼問題。該庫希望您使用您的特定測試實例的salesforce。所以cs70.salesforce.comcs17.salesforce.com等等。當您從test.salesforce.com的瀏覽器登錄沙箱時,成功登錄後,您將被重定向到您的實例(abXX.salesforce.com)。使用instance

而且,你不需要有一個「空」的Salesforce會話變量(sf = Salesforce(instance='test.salesforce.com',session_id = '')


另外,(我知道這是一個2歲的線程,我不知道是什麼simple_salesforce就像當時那樣,但是,如果你不想使用requests)。以下取自the new github page。網站上還有更多的例子,但答案的整個部分都偏離了這個問題。

記錄管理要在Salesforce創建一個新的「聯繫人」:

sf.Contact.create({'LastName':'Smith','Email':'[email protected]'})

這將返回一個字典,如{u'errors': [], u'id': u'003e0000003GuNXAA0', u'success': True}

爲了得到一個字典,所有關於該記錄的信息, 用途:

contact = sf.Contact.get('003e0000003GuNXAA0')

爲了得到一個字典,所有關於該記錄的信息,利用被定義爲外部ID的自定義字段:

contact = sf.Contact.get_by_custom_id('My_Custom_ID__c', '22')

從「史密斯」到「瓊斯」,並更改聯繫人的姓氏加 '約翰' 使用一個名字:

sf.Contact.update('003e0000003GuNXAA0',{'LastName': 'Jones', 'FirstName': 'John'})

要刪除聯繫人:

sf.Contact.delete('003e0000003GuNXAA0')

因此,更新的回答將只需要前2線

from simple_salesforce import Salesforce 

sf = Salesforce(username=username, password=password, security_token=security_token,session=session,sandbox=True) 
# my_object = sf.Custom_Object__c.get('123456789') # example use