Crear una aplicación de cliente externo
Crear un proyecto de SFDX
Con el entorno configurado, ya podemos crear la aplicación de cliente externo. Para ello, necesita un proyecto de SFDX.
- Cree una carpeta con el nombre
ECA Metadata
en el ordenador donde quiera crear la aplicación.
- Abra la carpeta en Visual Studio Code.
- Abra el terminal en Visual Studio Code en la carpeta que ha creado.
- Ejecute este comando en el terminal para crear un proyecto de Salesforce DX con el nombre
ecaViaMetadata
y la plantilla estándar.
sf project generate --name ecaViaMetadata --template standard
Autorizar la organización de Dev Hub
Conecte el proyecto de SFDX de su ordenador con el Dev Hub del Trailhead Playground mediante la aplicación conectada. Para este paso, necesita su dominio. Para encontrar su dominio en Setup (Configuración), introduzca My Domain
(Mi dominio) en el cuadro Quick Find (Búsqueda rápida) y, a continuación, haga clic en My Domain (Mi dominio).
- Abra la carpeta "ECA Metadata" del proyecto de SFDX en Visual Studio Code.
- En el terminal de Visual Studio Code, ejecute este comando después de sustituir <my domain> por el dominio de su organización.
sf org login web --set-default-dev-hub --alias ecaViaMetadata --instance-url https://<my domain>
- Inicie sesión con las credenciales de su Trailhead Playground en la página web que se abre.
- Permita el acceso a la organización.
Configurar el proyecto de SFDX para una aplicación de cliente externo
- Abra el archivo
sfdx-project.json
en Visual Studio Code.
- Cambie el parámetro sfdcLoginUrl a su dominio.
Para encontrar su dominio en Setup (Configuración), introduzca My Domain
(Mi dominio) en el cuadro Quick Find (Búsqueda rápida) y, a continuación, haga clic en My Domain (Mi dominio).
- Expanda el directorio con el nombre config y abra el archivo de definición de la organización borrador, que se llama project-scratch-def.json. Agregue
ExternalClientApps
yExtlClntAppSecretExposeCtl
al ajuste "features" (funciones).
"features": ["EnableSetPasswordInApi", "ExternalClientApps", "ExtlClntAppSecretExposeCtl"],
-
Cree un archivo de manifiesto package.xml en el directorio del proyecto.
- Agregue el contenido al archivo package.xml.
<?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>ExternalClientApplication</name> </types> <version>61.0</version> </Package>
- En el directorio force-app/main/default directory, cree una carpeta con el nombre
externalClientApps
.
- Agregue un archivo a la carpeta externalClientApps con el nombre
ecaViaMetadata.eca-meta.xml
. Este será el archivo de encabezado de la aplicación de cliente externo.
- Agregue el contenido al archivo de encabezado.
<?xml version="1.0" encoding="UTF-8"?> <ExternalClientApplication xmlns="http://soap.sforce.com/2006/04/metadata"> <contactEmail>eca_metadata@example.com</contactEmail> <description>External client app Metadata API creation</description> <distributionState>Local</distributionState> <isProtected>false</isProtected> <label>ecaViaMetadata</label> </ExternalClientApplication>
Llegados a este punto, la aplicación de cliente externo está técnicamente lista. Podría implementar esta configuración y aparecería en el gestor de aplicaciones de cliente externo de su Playground como una aplicación de cliente externo básica. Sin embargo, para que sea útil, necesita un complemento. Vamos a configurar un complemento de OAuth similar al que creamos en el primer módulo. Un complemento de OAuth configurado para el flujo de OAuth 2.0 Web Server necesita un par de modificaciones y un par de archivos nuevos.
Activar y configurar el complemento de OAuth
A diferencia de las aplicaciones conectadas, que combinan todas las configuraciones en un archivo, las aplicaciones de cliente externo incluye dos archivos de configuración y un archivo de políticas. El archivo Global OAuth Settings incluye campos confidenciales, como la clave de consumidor y el secreto de consumidor de OAuth, que deben protegerse. El archivo OAuth Settings incluye todas las configuraciones de menor confidencialidad de una aplicación de cliente externo. No hay necesidad de crear un archivo de políticas durante la configuración de una aplicación de cliente externo para el flujo del servidor web, ya que las políticas se configuran en base a los archivos de configuración. El archivo OAuth Policies se genera al implementar la aplicación de cliente externo.
Crear un archivo Global OAuth Settings
- En el directorio force-app/main/default directory, cree una carpeta con el nombre
extlClntAppGlobalOauthSets
.
- Agregue un archivo a la carpeta extlClntAppGlobalOauthSets con el nombre
ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml
.
- Abra el archivo ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml en VS Code y agregue el siguiente contenido.
<?xml version="1.0" encoding="UTF-8"?> <ExtlClntAppGlobalOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata"> <callbackUrl>https://openidconnect.herokuapp.com/callback</callbackUrl> <externalClientApplication>ecaViaMetadata</externalClientApplication> <isConsumerSecretOptional>false</isConsumerSecretOptional> <isIntrospectAllTokens>false</isIntrospectAllTokens> <isPkceRequired>false</isPkceRequired> <isSecretRequiredForRefreshToken>true</isSecretRequiredForRefreshToken> <label>ecaViaMetadataglobalset</label> <shouldRotateConsumerKey>false</shouldRotateConsumerKey> <shouldRotateConsumerSecret>false</shouldRotateConsumerSecret> </ExtlClntAppGlobalOauthSettings>
- Guarde el archivo Global OAuth Settings.
Crear un archivo OAuth Settings
- En el directorio force-app/main/default directory, cree una carpeta con el nombre
extlClntAppOauthSettings
.
- Agregue un archivo a la carpeta extlClntAppOauthSettings con el nombre
ecaViaMetadataSettings.ecaOauth-meta.xml
.
- Abra el archivo ecaViaMetadataSettings.ecaOauth-meta.xml en VS Code y agregue el siguiente contenido.
<?xml version="1.0" encoding="UTF-8"?> <ExtlClntAppOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata"> <commaSeparatedOauthScopes>Api, Web, OpenID</commaSeparatedOauthScopes> <externalClientApplication>ecaViaMetadata</externalClientApplication> <label>ECA via Metadata Oauth Settings</label> </ExtlClntAppOauthSettings>
- Guarde el archivo OAuth Settings.
Hacer referencia a los archivos de configuración (Settings) en el archivo de encabezado
Ahora que ha creado los dos archivos de configuración, debe incorporarlos a la aplicación de cliente externo. El archivo Header (Encabezado) es una lista de todos los archivos que componen la aplicación de cliente externo.
- Abra el archivo de manifiesto package.xml.
- Agregue una entrada para cada uno de los tres archivos de OAuth.
<?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>ExternalClientApplication</name> </types> <types> <members>*</members> <name>ExtlClntAppOauthSettings</name> </types> <types> <members>*</members> <name>ExtlClntAppGlobalOauthSettings</name> </types> <types> <members>*</members> <name>ExtlClntAppOauthConfigurablePolicies</name> </types> <version>61.0</version> </Package>
- Guarde el archivo de manifiesto package.xml.
Implementar su aplicación de cliente externo
Ahora que ha configurado correctamente la aplicación de cliente externo, puede implementarla. El archivo de políticas se crea durante la implementación, así que, después, puede recuperar la aplicación de cliente externo para extraer el archivo generado en su proyecto de SFDX.
- Ejecute este comando para implementar la aplicación de cliente externo. Sustituya <username> por el nombre de usuario que utilizó para iniciar sesión al autorizar el Dev Hub.
sf project deploy start --manifest package.xml --target-org <Username>
- Recupere la aplicación de cliente externo desde el Trailhead Playground. Sustituya <username> por el nombre de usuario que utilizó para iniciar sesión al autorizar el Dev Hub.
sf project retrieve start --manifest package.xml --target-org <username>
Verificar la aplicación
Después de implementar y recuperar la aplicación de cliente externo, debería haber un archivo de políticas en su proyecto de SFDX, donde antes no había ninguno.
Además, puede abrir el gestor de aplicaciones de cliente externo para ver una nueva aplicación llamada ecaViaMetadata. Si se siente con ganas de aventura, puede incluso recopilar el valor de My Domain (Mi dominio) y la clave y el secreto de consumidor de OAuth, y conectarlo todo al Playground de OpenID Connect para hacer un recorrido por el flujo de OAuth Web Server.
Recursos
- Ayuda de Salesforce: Crear una aplicación de cliente externo con una API de metadatos
- Ayuda de Salesforce: Understanding Metadata API (Comprender la API de metadatos)
- Ayuda de Salesforce: Deploying and Retrieving Metadata (Implementar y recuperar datos)
- Ayuda de Salesforce: How Salesforce Developer Experience Changes the Way You Work (Por qué la experiencia de desarrolladores de Salesforce cambia su forma de trabajar)
- Trailhead: Aspectos básicos sobre las API