首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python简单Salesforce

Python简单Salesforce
EN

Stack Overflow用户
提问于 2014-08-05 02:23:09
回答 8查看 16.8K关注 0票数 10

我正在尝试使用salesforce查询salesforce数据。我正在使用我的用户名和密码,我百分之百肯定是正确的。我从登录Salesforce并查看我的公司简介中获得了组织ID。它只是一个15位的ID,我特别使用orgID来避免使用安全令牌,因为我不知道它是什么。我做错了什么?

代码:

代码语言:javascript
复制
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')

输出:

代码语言:javascript
复制
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.
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2018-04-03 02:29:13

有一种方法可以使用简单的salesforce登录,只需用户名和密码。不需要安全令牌:

代码语言:javascript
复制
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>')

解释

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

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

备注

PyPI上的simple-salesforce版本(即pip install simple-salesforce)在简单销售 GitHub存储库中非常过时。最新版本支持使用自定义域登录的附加登录参数,如domain。若要获得最新版本,请使用

代码语言:javascript
复制
pip install --upgrade https://github.com/simple-salesforce/simple-salesforce/archive/master.zip

(Pip-从zip安装比使用git+ssh://git+https://更快,如这个答案中所指出的。)

票数 6
EN

Stack Overflow用户

发布于 2014-11-30 03:56:35

我编写了大部分simple-salesforce (虽然不是organizationId部分,因为我没有一个IP白名单帐户来测试)。

标准/香草/正规/99%的用户应该使用的版本是简单的usernamepasswordsecurity_token方法。

所以像这样的事情

代码语言:javascript
复制
from simple_salesforce import Salesforce
sf = Salesforce(username='nick@nickcatalano.com', password='nickspassword', security_token='tokenemailedtonick')

到目前为止,最令人困惑的部分是security_token部分(也是我被困住的部分)。原来,安全令牌是在成功的密码重置后发送给您的。所以,如果你进入你的salesforce帐户并重置你的密码,我相信你最终会收到一封带有subject salesforce.com security token confirmation的电子邮件,邮件中将包含一个Security Token。那是你的security_token

老实说,security_token kwarg比任何东西都更方便。在大多数用户所依赖的正常email/password/token流中,实际发送的是email作为登录名,{password}{security_token}作为密码。我相信你自己也可以这样做,如果你想的话,你只需输入一个emailpassword kwarg,但我想强迫人们输入密码和令牌会违反simple-salesforcesimple部分。

票数 9
EN

Stack Overflow用户

发布于 2014-08-05 18:56:33

编辑

如何重置我的密码告诉我什么是令牌?

只是会的。如果用户以前曾请求过安全令牌(通过电子邮件发送给您--因此您需要访问与用户关联的电子邮件地址),则每次后续的密码重置都会产生新令牌并将其发送给您。最重要的是,一旦您登录到系统(登录到web版本,而不是通过API),您将有一个选项来重置您的令牌(再次,这将发送给您的电子邮件)。

就好像你还没读过我们写过的东西!

从可信和/或官方来源寻找答案。

token.htm

https://help.salesforce.com/HTViewSolution?id=000004502

https://help.salesforce.com/HTViewSolution?id=000003783

从图书馆的文件来看:

https://github.com/neworganizing/simple-salesforce

若要使用IP白名单组织ID方法登录,只需使用Salesforce用户名、密码和organizationId即可。

这。如果您的IP地址是白色的-您不需要令牌。如果不是-您需要生成令牌。句号。

原始答案

我不熟悉Python库但是..。转到Salesforce -> Setup ->我的个人信息并检查登录历史记录。如果它包含"failed: security“之类的内容,那么您就完蛋了,将不得不使用这个安全令牌。

我不知道任何使用org id的旁路(我已经通过API从PHP,Java,C#.因此,如果Python库有某种神奇的方法绕过它,我会感到非常惊讶。您可能已经习惯于传递一个假设您已经通过身份验证并具有有效会话的会话id。

另一个选项是检查您的IP并将其添加到受信任的IP范围(这是设置中的一个选项)。例如,当整个办公室拥有相同的静态IP时,它是有用的;如果您在家里工作,则不太有用。

如果这也是不可行的,那么您可能希望寻找使用OAuth2而不是常规SOAP进行身份验证的库。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25130278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档