我正在尝试使用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授权操作如何正常运作?
感谢。
答案 0 :(得分:0)
会话变量仅在单个消息的范围内可用。看起来你有两个单独的Mule调用,从而生成两个单独的消息。
还有一个已知问题,即回调后丢失流和会话变量。授权消息处理器旨在完全隔离任何其他连接器操作,而您需要从授权流返回accessTokenId作为消息属性,并将其显式发送回任何其他流以进行处理(作为消息属性例)。
请点击此处查看类似的答案:Flow Vars getting lost after Facebook Authorize in MuleStudio