2

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 コネクタで使用したいと考えています。しかし、トランスポートで変数が失われているようです...

これは既知の問題 ( mule facebook - flow variable ) であると読みましたが、ウォークアラウンドなどはありませんか?

4

1 に答える 1

2

回答が暗示しているように、authorize 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>

理由はなんとなくわかりますが、非常に具体的な方法でアプリを設計する必要があります。

他のオプションは、「状態」パラメーターを使用することです。ただし、これは、フロー変数に含まれるデータの種類によって異なります。例:

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

これは、次の方法で取得できるインバウンド プロパティとしてコールバックで返されます。

#[message.inboundProperties['state']] 

または、おそらくミュールオブジェクトストアで、特定の値を永続化することを検討することもできます。

于 2013-08-15T19:59:52.757 に答える