You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的simple_salesforce包时遭遇SalesforceExpiredSession错误

解决simple_salesforce调用Salesforce报表API的INVALID_SESSION_ID错误

我用simple_salesforce包下载Salesforce上的报表,代码如下:

from simple_salesforce import Salesforce
import requests
import pandas as pd
from io import StringIO


sf = Salesforce(username='myusername', 
                password='mypassword',
                security_token='mytoken',
                version='46.0')


report_id = 'myreportid'
sf.restful('analytics/reports/{}'.format(report_id))

执行后报错:

SalesforceExpiredSession: 会话已过期,请求地址:https://company_name.my.salesforce.com/services/data/v46.0/analytics/reports/myreporid。响应内容: [{'message': '该会话无法用于REST API', 'errorCode': 'INVALID_SESSION_ID'}]

解决办法

  • 刷新会话:直接重新初始化Salesforce对象,或者调用sf.login()方法重新登录,更新会话ID。
  • 检查API权限:确认账号拥有Analytics REST API访问权限,在Salesforce的权限集里开启对应权限。
  • 升级API版本:46.0版本较旧,尝试换成最新的稳定版本(比如58.0),避免版本兼容问题。
  • 手动构造请求:如果restful方法会话有问题,直接用requests带会话头请求:
headers = {
    'Authorization': f'Bearer {sf.session_id}',
    'Content-Type': 'application/json'
}
response = requests.get(f'{sf.base_url}/analytics/reports/{report_id}', headers=headers)
# 解析报表数据
report_data = response.json()
# 如果要转成DataFrame
df = pd.DataFrame(report_data['factMap']['T!T']['rows'])
  • 验证实例URL:确认sf.base_url和你的Salesforce实例域名匹配,避免会话绑定到错误域名。

内容的提问来源于stack exchange,提问作者sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:55:16