Salesforce SOAP/Metadata API登录Python

2024-05-14 20:04:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Pythonzeep来使用SOAP与Salesforce的元数据API交互。在

我试图从最简单的事情开始,登录并读取一个元数据对象。在

from zeep import Client as zClient

client = zClient('sf_config/sf_metadata_40.xml',
                 wsse=UsernameToken('bub@bob.com', 'scary_secretPassW*rd')

// readMetadata method exists, prints <zeep.client.OperationProxy object at ...>
print client.service.readMetadata

// errors because login method does not exist
print client.service.login

问题是,Salesforce要求您将指向的端点更改为您在响应登录请求(docs)时获得的URL。但我不知道怎么打这样的登录电话。上面的代码似乎通过在client对象的构造中使用用户名和密码来隐藏登录调用。在

因此,像这样执行readMetadata方法会导致这个错误:
Fault: UNKNOWN_EXCEPTION: Destination URL not reset. The URL returned from login must be set in the SforceService

所以我的问题是如何在Python中对soapapi进行登录调用?在

(Salesforcedocs中的Java示例使用了一个connection对象,我不太确定Python-zeep的等价物是什么,所以我没有一个例子可以参考。)

编辑:
顺便说一句,我在Salesforce stack exchange上问过这个问题,但是我想知道zeep的人可能会回答这个问题,即使他们不认识Salesforce,所以也值得在这里发布。在

更新:
对于身份验证,我已经使用OAuth flow来获取访问令牌,以便与restapi一起使用,所以我将重用该auth方法/访问令牌。我的问题变成了:

1)我如何使用访问令牌(我相信它取代了sessionID)然后向元数据API发出请求?
2) 如果我使用OAuth flow来获取访问令牌,那么我仍然缺少元数据API服务器url,那么我如何获得它(或者构造它,比如https://server-api.salesforce.com/services/Soap/m/40.0/orgId或其他什么东西)?在


Tags: 数据对象fromcomclientapiurlservice

热门问题