Python连接Salesforce遇认证失败,如何使用Access Token认证?
解决simple-salesforce认证失败问题
核心问题:Access Token ≠ Security Token
你遇到的错误是因为把Access Token当成了Security Token传入,这是两个完全不同的认证凭证:
- Security Token是Salesforce用于用户名+密码登录API时的附加验证项,和用户账号绑定
- Access Token是OAuth认证流程后得到的会话令牌,直接代表已认证的会话
用Access Token直接完成认证
simple-salesforce支持直接使用已有的Access Token和Instance URL初始化客户端,不需要用户名、密码和Security Token。代码示例如下:
from simple_salesforce import Salesforce import pandas as pd # 替换为你邮件里的对应值 sf = Salesforce( instance_url='https://your-instance.salesforce.com', session_id='your-provided-access-token' )
这里的session_id参数就是你拿到的Access Token,instance_url用邮件中提供的地址即可,这样就能直接建立已认证的连接。
若要使用用户名+密码+Security Token登录
如果你之后想改用这种方式,需要获取正确的Security Token:
- 登录Salesforce网页端,点击右上角头像→设置
- 在左侧导航栏进入我的个人信息→重置我的安全令牌
- 系统会将新的Security Token发送到你的注册邮箱,拿到后替换代码中的
security_token参数即可
IP白名单的影响
如果你的机器IP不在Salesforce org的信任IP列表中,使用用户名+密码登录API时必须提供Security Token,否则会触发认证失败。而使用Access Token认证时,是否受IP限制取决于该令牌的生成规则:如果这个Access Token是在信任IP环境下生成的,非信任IP调用可能会被拒绝,你可以先测试上述Access Token的登录方式,验证是否存在IP限制。
内容的提问来源于stack exchange,提问作者lengthy_preamble
相关产品推荐
相关产品推荐

