Saltar al contenido

Python Simple Salesforce

Solución:

Escribí la mayor parte de simple-salesforce (aunque no el organizationId parte, ya que no tengo una cuenta en la lista blanca de IP para probar)

La versión estándar / vainilla / regular / el 99% de los usuarios debería usar es la simple username, password, security_token método.

Entonces algo como esto

from simple_salesforce import Salesforce
sf = Salesforce(username="[email protected]", password='nickspassword', security_token='tokenemailedtonick')

Con mucho, la parte más confusa es la security_token parte (y fue la parte con la que me enganché). Resulta que el token de seguridad se le envía por correo electrónico después de restablecer correctamente la contraseña. Entonces, si ingresa a su cuenta de Salesforce y restablece su contraseña, creo que terminará con un correo electrónico con el asunto salesforce.com security token confirmation que contendrá un Security Token en el correo electrónico. Esa es su security_token.

Para ser honesto, el security_token kwarg es más una conveniencia que cualquier otra cosa. En lo normal email/password/token flujo en el que la mayoría de los usuarios confían en lo que realmente se envía es email como inicio de sesión y {password}{security_token} como contraseña. Creo que podrías concatenarte tú mismo y pasar en un email y password kwarg si lo desea, pero supuse que obligar a la gente a concatizar la contraseña y el token ellos mismos iría en contra de la simple parte de simple-salesforce

Allí es una forma de iniciar sesión con simple-salesforce con solo un nombre de usuario y contraseña. No se requiere token de seguridad:

from simple_salesforce import Salesforce, SalesforceLogin

session_id, instance = SalesforceLogin(username="<user>", password='<pass>')
sf = Salesforce(instance=instance, session_id=session_id)
# Logged in! Now perform API actions, SOQL queries, etc.
sf.query_all('<soql>')

Explicación

Todos los ejemplos que utilizan simple-salesforce comienzan con una llamada al Salesforce constructor para iniciar sesión. Este constructor acepta una ID de sesión existente o credenciales de autenticación para iniciar sesión y crear una nueva sesión. Al iniciar sesión, llama al nivel inferior SalesforceLogin función para hacer el trabajo real, pero curiosamente SalesforceLogin no impone las mismas restricciones en sus argumentos, emite la llamada SOAP correcta para iniciar sesión con solo un nombre de usuario y contraseña, sin requerir un token o ID de organización.

Usando este truco, llamamos SalesforceLogin directamente, obtenga el nuevo ID de sesión, luego páselo directamente al Salesforce constructor. A partir de ese momento, podemos realizar solicitudes de API autenticadas.

Nota

La versión de simple-salesforce en PyPI (es decir pip install simple-salesforce) está muy desactualizado con el repositorio de GitHub de salesforce simple. La última versión admite parámetros de inicio de sesión adicionales como domain para iniciar sesión con dominios personalizados. Para obtener la última versión, use

pip install --upgrade https://github.com/simple-salesforce/simple-salesforce/archive/master.zip

(La instalación de pip desde zip es más rápida que usar git+ssh:// o git+https://, como se indica en esta respuesta).

Editar

¿Cómo me mostrará el restablecimiento de mi contraseña qué es el token?

Simplemente lo hará. Si el usuario alguna vez ha solicitado el token de seguridad (que se le envía por correo electrónico, por lo que debe tener acceso a la dirección de correo electrónico asociada con su usuario), cada restablecimiento de contraseña posterior resultará en la generación y envío de un nuevo token por correo electrónico. Además de eso, una vez que haya iniciado sesión en el sistema (a la versión web, no a través de API), tendrá la opción de restablecer su token (y nuevamente, esto le enviará un correo electrónico).

¡Es como si no hubieras leído ni probado nada de lo que hemos escrito!

Buscando una respuesta basada en fuentes confiables y / u oficiales.

https://help.salesforce.com/htviewhelpdoc?id=user_security_token.htm

https://help.salesforce.com/HTViewSolution?id=000004502

https://help.salesforce.com/HTViewSolution?id=000003783

Y de la documentación de la biblioteca:

https://github.com/neworganizing/simple-salesforce

Para iniciar sesión usando el método de ID de organización de lista blanca de IP, simplemente use su nombre de usuario, contraseña e ID de organización de Salesforce

Esta. Si su dirección IP está incluida en la lista blanca, no necesita el token. Si no es así, NECESITA generar el token. Período.


Respuesta original

No estoy familiarizado con esa biblioteca de Python, pero … Vaya a Salesforce -> Configuración -> Mi información personal y verifique el historial de inicio de sesión. si contiene cosas como “falló: se requiere token de seguridad”, entonces estás jodido y voluntad tienes que usar el token de seguridad.

No tengo conocimiento de ningún bypass que use org id (me he conectado a través de API desde PHP, Java, C # … así que me sorprendería mucho si esa biblioteca de Python tuviera alguna forma mágica de omitirlo. acostumbrado a pasar una identificación de sesión que asume que ya está autenticado y tiene una sesión válida.

Otra opción sería verificar su IP y agregarla a rangos de IP confiables (es una opción en la configuración). Es útil cuando, por ejemplo, toda la oficina tiene la misma IP estática; menos útil si trabaja desde casa.

Si eso también es un no-go, es posible que desee buscar bibliotecas que usen OAuth2 en lugar de la API SOAP normal para autenticarse.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *