Soap 将OAuth与SforceServiceLocator一起使用

Soap 将OAuth与SforceServiceLocator一起使用,soap,oauth,salesforce,Soap,Oauth,Salesforce,我正在看一些使用Salesforce SOAP API创建会话和访问数据的代码: SoapBindingStub binding = (SoapBindingStub) new SforceServiceLocator().getSoap(); String username; String password; [...] LoginResult result = binding.login(username, password); binding._setProperty(SoapBindin

我正在看一些使用Salesforce SOAP API创建会话和访问数据的代码:

SoapBindingStub binding = (SoapBindingStub) new SforceServiceLocator().getSoap();
String username;
String password;
[...]
LoginResult result = binding.login(username, password);
binding._setProperty(SoapBindingStub.ENDPOINT_ADDRESS_PROPERTY,result.getServerUrl());
SessionHeader sh = new SessionHeader();
sh.setSessionId(result.getSessionId());
binding.setHeader(new SforceServiceLocator().getServiceName().getNamespaceURI(), "SessionHeader", sh);
考虑到我有一个OAuth访问令牌和端点,有没有办法在没有用户名/密码的情况下使其正常工作?

经过多次尝试和错误后,答案如下

  • 使用OAuth访问令牌作为会话ID
  • ENDPOINT_ADDRESS_属性是端点URL和SOAP API URL,例如:
    https://na15.salesforce.com/services/Soap/u/21.0