一年多来,我使用
simple_salesforce
包连接到 Salesforce,以便从各种对象中提取一些数据并将其加载到数据湖中。
我使用了使用用户名/密码/安全令牌的身份验证方法。
client = Salesforce(
username="****************",
password="*************",
security_token="****************"
)
2 月 1 日实施了多因素身份验证。从那天开始,我不断地犯同样的错误。
[{'message': 'This session is not valid for use with the REST API', 'errorCode': 'INVALID_SESSION_ID'}]
经过一番研究,我尝试添加启用 API 的权限集,然后添加仅 API 用户。结果:仍然是同样的错误,但现在我被锁定在 UI 之外。
还有其他人遇到过类似的问题并可以为我指出正确的资源吗?谢谢!
根据 https://help.salesforce.com/s/articleView?id=000352937&type=1(Ctrl+F“API”),MFA 对于 API 访问应该不重要,这可能是您的管理员所做的其他事情。
用户名、密码+令牌听起来像是使用 SOAP 登录方法。
看看是否可以在 SF 中创建一个“连接的应用程序”来使用 OAuth2 登录方法,对于 REST API 来说更自然。我在https://stackoverflow.com/a/62694002/313628中写了一些相关内容。在连接的应用程序中,您应该能够允许 API 访问,甚至在需要时允许完全访问。不知道 Simple 是否有自然的键位置,如果你必须自己制作原始的 http 请求,那就有点垃圾了。
Simple 的文档还提到使用 JWT 登录(无论如何都需要连接的应用程序),基本上不是用户名 + 传递用户名 + 证书 + 管理员预先授权了该用户的事实......在证书过期之前你会没事的。
https://gist.github.com/booleangate/30d345ecf0617db0ea19c54c7a44d06f的文本部分可以帮助您创建连接的应用程序;如果您使用 Simple,则可能不需要示例代码