【问题标题】:Mule Facebook Connector - CallbackMule Facebook 连接器 - 回调
【发布时间】:2013-11-23 22:53:22
【问题描述】:

我正在尝试使用 Facebook 连接器在 Mule 中检索一些用户信息,如下所示:

    <facebook:config-with-oauth name="FacebookGlobal" appId="xxx" appSecret="xxx" doc:name="Facebook" scope="email,user_about_me, user_birthday, user_activities, user_groups, user_interests, user_likes">
        <facebook:oauth-callback-config domain="localhost" localPort="8000" remotePort="8000"/>     
    </facebook:config-with-oauth>
    <flow name="FacebookAuthorize" doc:name="FacebookAuthorize">
        <http:inbound-endpoint exchange-pattern="request-response"  doc:name="HTTP" host="localhost" path="auth" port="8000"/>
        <facebook:authorize config-ref="FacebookGlobal" doc:name="Authorize"/>
        <set-session-variable doc:name="Save Access Token" value="#[flowVars['OAuthAccessTokenId']]" variableName="accessTokenId"/>
    </flow>

    <flow name="FacebookFlow1" doc:name="FacebookFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8000" doc:name="Callback"/>
        <facebook:get-user config-ref="FacebookGlobal" user="me" doc:name="Facebook" accessTokenId="#[sessionVars['accessTokenId']]"/>
    </flow>

问题是在 FacebookAuthorize 流程中执行 facebook:authorize 操作后,流程被中断并自动转到 oauth-callback-config 中指定的回调 url。因此,OAuthAccessTokenID 永远不会保存在会话变量中,并且不能在其他流程中使用。 Facebook Authorize 操作究竟是如何工作的?

谢谢。

【问题讨论】:

    标签: facebook oauth mule facebook-oauth mule-studio


    【解决方案1】:

    会话变量仅在单个消息的范围内可用。看起来您对 Mule 进行了两次单独的调用,从而生成了两条单独的消息。

    还有一个已知问题,即流和会话变量在回调后丢失。授权消息处理器旨在与任何其他连接器操作完全隔离地调用,相反,您需要将 accessTokenId 作为消息属性从授权流返回,并将其显式发送回任何其他流进行处理(作为消息属性例子)。

    请参阅此处以获取类似答案:Flow Vars getting lost after Facebook Authorize in MuleStudio

    【讨论】:

    • 那么有什么办法可以将 OAuthAccessTokenId 传递给回调流?
    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2011-12-23
    相关资源
    最近更新 更多