我正在尝试使用salesforce查询salesforce数据。我正在使用我的用户名和密码,我百分之百肯定是正确的。我从登录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')输出:
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.发布于 2018-04-03 02:29:13
有一种方法可以使用简单的salesforce登录,只需用户名和密码。不需要安全令牌:
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。若要获得最新版本,请使用
pip install --upgrade https://github.com/simple-salesforce/simple-salesforce/archive/master.zip(Pip-从zip安装比使用git+ssh://或git+https://更快,如这个答案中所指出的。)
发布于 2014-11-30 03:56:35
我编写了大部分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')到目前为止,最令人困惑的部分是security_token部分(也是我被困住的部分)。原来,安全令牌是在成功的密码重置后发送给您的。所以,如果你进入你的salesforce帐户并重置你的密码,我相信你最终会收到一封带有subject salesforce.com security token confirmation的电子邮件,邮件中将包含一个Security Token。那是你的security_token。
老实说,security_token kwarg比任何东西都更方便。在大多数用户所依赖的正常email/password/token流中,实际发送的是email作为登录名,{password}{security_token}作为密码。我相信你自己也可以这样做,如果你想的话,你只需输入一个email和password kwarg,但我想强迫人们输入密码和令牌会违反simple-salesforce的simple部分。
发布于 2014-08-05 18:56:33
编辑
如何重置我的密码告诉我什么是令牌?
只是会的。如果用户以前曾请求过安全令牌(通过电子邮件发送给您--因此您需要访问与用户关联的电子邮件地址),则每次后续的密码重置都会产生新令牌并将其发送给您。最重要的是,一旦您登录到系统(登录到web版本,而不是通过API),您将有一个选项来重置您的令牌(再次,这将发送给您的电子邮件)。
就好像你还没读过我们写过的东西!
从可信和/或官方来源寻找答案。
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进行身份验证的库。
https://stackoverflow.com/questions/25130278
复制相似问题