我使用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
或其他什么东西)?在
目前没有回答
相关问题 更多 >
编程相关推荐