Pregunta

He probado Twitter y LinkedIn y parece que eventualmente puedo hacerlos funcionar, pero no puedo encontrar suficiente material para que funcionen los conectores de Google.Cuando uso el conector de Google Calendar, intento recopilar el token con: #[flowVars['tokenId']] pero el valor siempre sale como null.¿Estoy haciendo algo mal?¿Puede ayudarme alguien, por favor?

Gracias,

Ceniza.

¿Fue útil?

Solución

Respondí mi propia pregunta para cualquiera que esté luchando con el mismo problema:

Gestión de tokens de OAuth (opcional)

Configurar el almacén de objetos

Para mantener los datos persistentes, necesita almacenarlos en algún lugar; se recomienda utilizar ObjectStore para esto.Instale un conector ObjectStore.Configúrelo así en su aplicación:

<objectstore:config name="ObjectStore" doc:name="ObjectStore" />

Almacenamiento de tokens después de la autorización

Una vez finalizado el proceso de autorización, el accessTokenId del servicio que está invocando está disponible como una variable de flujo denominada OAuthAccessTokenId.Debe conservar este ID para poder utilizarlo en futuras invocaciones de su conector.Este ejemplo muestra cómo almacenar esta variable en ObjectStore bajo la clave accessTokenId.

<flow name="authorize-google" doc:name="authorize-google">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="authorize" doc:name="HTTP"/>
        <google-contacts:authorize config-ref="Google_Contacts" doc:name="Authorize GContacts"/>
        <objectstore:store config-ref="ObjectStore" key="accessTokenId" value-ref="#[flowVars['OAuthAccessTokenId']]" overwrite="true" doc:name="ObjectStore"/>    
</flow>

Usando su token de acceso

Cualquier invocación de su conector debe cargar el token de acceso desde ObjectStore y hacer referencia a él.Este ejemplo muestra cómo cargarlo desde ObjectStore y verificar si estaba configurado antes de continuar.

<enricher target="#[flowVars['accessTokenId']]" doc:name="Message Enricher">
            <objectstore:retrieve config-ref="ObjectStore" key="accessTokenId" defaultValue-ref="#['']" doc:name="Get AccessToken"/>
</enricher>
<expression-filter expression="#[flowVars['accessTokenId'] != '']" doc:name="Is Access Token Set"/>

Una vez que accessTokenId esté disponible como variable de flujo, puede hacer referencia a él en las operaciones de su conector:

<google-contacts:get-contacts config-ref="Google_Contacts" accessTokenId="#[flowVars['accessTokenId']]" />

Más detalles aquí - http://www.mulesoft.org/documentation/display/34X/Using+a+Connector+to+Access+an+OAuth+API

Así es como se ve en el estudio: http://imgur.com/DtLodel

Gracias,

Ceniza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top