调用Salesforce REST API持续返回400错误,求排查方案
Salesforce沙盒API获取访问令牌400错误排查方向
以下是针对你遇到的400错误的具体排查点:
密码需包含安全令牌
Salesforce密码认证模式要求使用「登录密码+安全令牌」的组合值,不是单独的登录密码。若未获取过安全令牌,可登录沙盒账号后通过「设置→我的个人信息→重置我的安全令牌」获取,将令牌直接追加到原密码后作为PASSWORD变量的值。核对沙盒域名准确性
沙盒域名格式并非固定为trailblaze.my.salesforce.com,部分沙盒使用sandbox.my.salesforce.com或自定义域名。登录沙盒后复制地址栏完整域名替换DOMAIN变量,确保完全匹配。检查Connected App配置
- 确认Connected App的OAuth范围至少勾选
api(允许API访问)权限; - 若开启了IP限制,需将运行代码的服务器IP加入允许列表,或暂时关闭IP限制测试;
- 确保已勾选「启用OAuth设置」,且回调地址填写有效地址(如
https://login.salesforce.com/services/oauth2/success)。
- 确认Connected App的OAuth范围至少勾选
验证用户账号权限
- 确认账号已开启
API Enabled权限(在用户配置的权限集或配置文件中查看); - 账号处于激活状态,未被冻结。
- 确认账号已开启
查看详细错误响应
修改代码打印完整的错误响应内容,这是定位问题最直接的方式:print(response.json())响应会返回具体错误码和描述,比如
invalid_grant代表凭证无效,ip_restricted代表IP受限等。确认请求编码正确性
可显式指定请求头确保payload编码符合要求:headers = {'Content-Type': 'application/x-www-form-urlencoded'} response = requests.post(DOMAIN + oauth_endpoint, data=payload, headers=headers)
你的原始代码:
from consumer_details import CONSUMER_KEY, CONSUMER_SECRET, USERNAME, PASSWORD import requests import pandas as pd DOMAIN = 'https://myplaygroundname.trailblaze.my.salesforce.com' payload = { 'grant_type': 'password', 'client_id': CONSUMER_KEY, 'client_secret': CONSUMER_SECRET, 'username': USERNAME, 'password': PASSWORD } oauth_endpoint = '/services/oauth2/token' response = requests.post(DOMAIN + oauth_endpoint, data=payload) print(response)
内容的提问来源于stack exchange,提问作者Tillski97
相关产品推荐
相关产品推荐

