Ошибка аутентификации при попытке обратиться к Salesforce API для тестовой организации - PullRequest
0 голосов
/ 01 мая 2020

Я использую следующий код для входа в наши организации Salesforce, код работает отлично, пока он подключается к prod org, но как только я изменяю endpoint с "https://login.salesforce.com/services/Soap/u/35.0" на "https://test.salesforce.com/services/Soap/u/35.0", чтобы подключиться к нашему тестовый орган, он не прошел и показал мой exceptionCode='INVALID_LOGIN'.

from runcmd.java_helper import jvm
from runcmd.logging_helper import get_logger

LOGGER = get_logger(__name__)
ENDPOINT = "https://test.salesforce.com/services/Soap/u/35.0"

def authenticate(username, password, security_token) -> dict:
    """
    Authenticates against salesforce.
    """
    return {
        "username": username,
        "password": password,
        "security_token": security_token
    }
def _build_sf_connection(spark, sf_obj):
    config = jvm(spark).com.sforce.ws.ConnectorConfig()
    config.setUsername(sf_obj["username"])
    config.setPassword(sf_obj["password"] + sf_obj["security_token"])
    config.setAuthEndpoint(ENDPOINT)
    config.setServiceEndpoint(ENDPOINT)
    LOGGER.info("Username=%s" % sf_obj["username"]) 
    return jvm(spark).com.sforce.soap.partner.Connector.newConnection(config)

Я проверил информацию для входа в систему, и все они верны, но я заметил, что хотя я изменил конечную точку в коде на test.salesforce, он все еще пытается подключиться через login.salesforce.

20/05/01 06:13:58 INFO SFConfig: loginURL : https://login.salesforce.com/services/Soap/u/35.0
20/05/01 06:14:02 ERROR SFConfig: Exception while creating connection
[LoginFault [ApiFault  exceptionCode='INVALID_LOGIN'
 exceptionMessage='Invalid username, password, security token; or user locked out.'
 extendedErrorDetails='{[0]}'

1 Ответ

0 голосов
/ 01 мая 2020

У вас должно быть что-то еще, что устанавливает login.salesforce.com, возможно, java приложение жестко закодировано в JAR или определено в их собственных файлах конфигурации ... какая-то особая причина, почему это делается через java? Вы экспериментировали с https://pypi.org/project/simple-salesforce/ или https://pypi.org/project/pyforce/ и считали их непригодными?

Если присмотреться к com.sforce.soap.partner ... хм, похоже " Partner WSDL", который был использован, из него сгенерировано Java классов (go для Setup -> API). Вы можете проверить эти классы и посмотреть, есть ли что-нибудь встроенное, что позволяет переопределить во время выполнения код, сгенерированный на основе этого фрагмента в нижней части WSDL.

<service name="SforceService">
    <documentation>Sforce SOAP API</documentation>
    <port binding="tns:SoapBinding" name="Soap">
        <soap:address location="https://login.salesforce.com/services/Soap/u/48.0"/>
    </port>
</service>

Если он был просто сгенерирован и оставлен на свое усмотрение устройств, и никто не хочет трогать Java ... Хм, проверьте, можете ли вы иметь 2 скомпилированных JAR-файла, расположенных рядом друг с другом, и вы загружаете тестовую версию или версию продукта в Python по мере необходимости?

Но это Похоже, что это был окольный способ работы, и API v 35 был выпущен ~ 3 года go, определенно стоит проверить ваши варианты сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...