在MuleStudio中获得Facebook授权后,Flow Vars迷失了方向

时间:2013-08-15 15:15:26

标签: facebook mule mule-studio

我有一个简单的流程来授权Facebook,然后发布消息。

<flow name="drupal-esbFlow2" doc:name="drupal-esbFlow2">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP"/>
    <set-variable variableName="facebookMSG" value="#[message.inboundProperties['msg']]" doc:name="Variable"/>
    <facebook:authorize config-ref="Facebook" doc:name="Authorize"/>
    <set-session-variable variableName="accessTokenId" value="#[flowVars['OAuthAccessTokenId']]" doc:name="Get OAuthAccessTokenId"/>
    <facebook:publish-message config-ref="Facebook" msg="#[flowVars['facebookMSG']]" profile_id="100001574667695" accessTokenId="#[sessionVars['accessTokenId']]" doc:name="Publish Message"/>
    <json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>

想法是我想点击端点localhost:8082?msg = myMessage。然后我想保护流变量中的inboundProperties ['msg']并在Facebook Connector中使用它。但似乎变量在运输中迷失了......

我已经读过这是一个已知的问题(mule facebook - flow variable),但是没有四处走动或什么?

1 个答案:

答案 0 :(得分:2)

正如答案所暗示的那样,似乎授权mp旨在完全隔离任何其他逻辑,并通过http:response-builder返回访问令牌ID。然后,客户端负责将访问令牌ID发送到另一个流以进行任何其他处理:

<flow name="authorizationAndAuthenticationFlow">
    <http:inbound-endpoint host="localhost" port="8080" path="oauth-authorize"/>
    <facebook:authorize/>
    <http:response-builder status="200">
        <http:set-cookie name="accessTokenId" value="#[flowVars['OAuthAccessTokenId']]"/>
        <set-payload value="You have successfully authorized the connector. You access token id is #[flowVars['OAuthAccessTokenId']]"/>
    </http:response-builder>
</flow>

我可以理解为什么,但让你以非常具体的方式构建你的应用程序。

其他选项是使用“state”参数。但这取决于您在流量变量中的数据类型。例如:

<facebook:authorize state="#[flowVars.myvalue]"/> 

这将作为入站属性在回调中返回,可通过以下方式检索:

#[message.inboundProperties['state']] 

或者,您可以查看持久化某些值,可能在mule对象库中。