Python Simple Salesforce

use*_*044 7 python soap salesforce python-2.7 simple-salesforce

我正在尝试使用simple_salesforce来使用Python查询salesforce数据.我正在使用我的用户名和密码,我100%肯定是正确的.我从登录Salesforce并查看我的公司资料中获得了组织ID.这只是一个15位数的ID.我特意使用orgID来避免使用安全令牌,因为我不知道它是什么.我究竟做错了什么?

码:

from simple_salesforce import Salesforce
sf = Salesforce(instance_url='https://na1.salesforce.com', session_id='')
sf = Salesforce(password='password', username='email', organizationId='15 digit org id')
Run Code Online (Sandbox Code Playgroud)

输出:

File "C:\Python27\lib\site-packages\simple_salesforce\api.py", line 100, in __init__
proxies=self.proxies)
File "C:\Python27\lib\site-packages\simple_salesforce\login.py", line 124, in SalesforceLogin
code=except_code, message=except_msg))
simple_salesforce.login.SalesforceAuthenticationFailed: INVALID_LOGIN: Invalid username, password, security token; or user locked out.
Run Code Online (Sandbox Code Playgroud)

Nic*_*tal 7

我写了大部分内容simple-salesforce(虽然不是organizationId部分,因为我没有IP白名单来测试)

标准/香草/用户应使用版本的定期/ 99%是简单的username,password,security_token方法.

所以这样的事情

from simple_salesforce import Salesforce
sf = Salesforce(username='nick@nickcatalano.com', password='nickspassword', security_token='tokenemailedtonick')
Run Code Online (Sandbox Code Playgroud)

到目前为止,最令人困惑的部分是security_token部分(并且是我被抓住的部分.)事实证明,在成功重置密码后,安全令牌会通过电子邮件发送给您.因此,如果您进入salesforce帐户并重置密码,我相信您最终会收到一封电子邮件,salesforce.com security token confirmation其中包含电子邮件中包含的主题Security Token.那是你的security_token.

说实话,security_tokenkwarg比任何东西都更方便.在普通的email/ password/ token流中,大多数用户依赖于实际发送的内容是email登录和{password}{security_token}密码.我相信你可以Concat的是自己,只是传递一个emailpasswordkwarg如果你想,但我想迫使人们Concat的密码和令牌本身会得到违背simple的一部分simple-salesforce


mxx*_*xxk 5

一个只有一个用户名和密码简单,销售人员登录方式。不需要安全令牌:

from simple_salesforce import Salesforce, SalesforceLogin

session_id, instance = SalesforceLogin(username='<user>', password='<pass>')
sf = Salesforce(instance=instance, session_id=session_id)
# Logged in! Now perform API actions, SOQL queries, etc.
sf.query_all('<soql>')
Run Code Online (Sandbox Code Playgroud)

解释

所有使用 simple-salesforce 的示例都以调用Salesforce构造函数以登录开始。此构造函数接受现有会话 ID 或身份验证凭据以登录并创建新会话。登录时,它调用较低级别的SalesforceLogin函数来完成实际工作,但有趣的SalesforceLogin是并没有对其参数强制执行相同的约束——它发出正确的 SOAP 调用以仅使用用户名和密码登录,而无需令牌或组织标识。

使用这个技巧,我们SalesforceLogin直接调用,获取新的会话ID,然后直接将其传递给Salesforce构造函数。从那时起,我们就可以发出经过身份验证的 API 请求。

笔记

PyPI 上的 simple-salesforce 版本(即pip install simple-salesforce)与simple-salesforce GitHub 存储库非常过时。最新版本支持额外的登录参数,例如domain使用自定义域登录。要获取最新版本,请使用

pip install --upgrade https://github.com/simple-salesforce/simple-salesforce/archive/master.zip
Run Code Online (Sandbox Code Playgroud)

(如本答案所述,从 zip 安装 Pip 比使用git+ssh://or快。)git+https://