Mule Facebook 空负载

Posted

技术标签:

【中文标题】Mule Facebook 空负载【英文标题】:Mule Facebook Null Payload 【发布时间】:2015-08-25 21:52:36 【问题描述】:

被要求评估购买 Mulesoft - 并制作连接到 facebook 的演示。我在这里关注两个样本:https://github.com/mulesoft/facebook-connector/blob/master/doc/sample.md 和 http://blogs.mulesoft.com/mule-school-integration-with-social-media-part-ii-%E2%80%93-facebook/

第一个示例遇到问题 - 它无法编译,因为 http 连接器的端点与 facebook 连接器相同。我做了一些研究并进行了一些更改,但我现在收到以下错误并且找不到其他遇到相同情况的人:

无法获取访问令牌。 Message payload is of type: NullPayload - 这是在回调页面上。有没有人经历过这个?

这是我的代码:

    <http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8099" doc:name="HTTP Listener Configuration"/>
<facebook:config-with-oauth name="Facebook-config" consumerKey="..." consumerSecret="..." scope="user_photos" doc:name="Facebook">
    <facebook:oauth-callback-config domain="localhost" localPort="8099" remotePort="8099" path="callback"/>
</facebook:config-with-oauth>
<http:listener-config name="HTTP_Listener_Configuration1" host="localhost" port="8094" doc:name="HTTP Listener Configuration"/>
<flow name="Authorize">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <facebook:authorize config-ref="Facebook-config" doc:name="Facebook"/>
    <set-session-variable variableName="accessTokenID" value="#[flowVars['OAuthAccessTokenId']]" doc:name="Save Access Token"/>
    <flow-ref name="PhotoDownload" doc:name="Call Photo Download"/>
</flow>
<flow name="PhotoDownload">
    <http:listener config-ref="HTTP_Listener_Configuration1" path="/" doc:name="HTTP"/>
    <not-filter doc:name="Not">
        <wildcard-filter pattern="/favicon.ico" caseSensitive="false"/>
    </not-filter>
    <facebook:get-user-picture config-ref="Facebook-config" user="me" accessTokenId="#[sessionVars['accessTokenId']]" doc:name="Get Profile Picture"/>
    <file:outbound-endpoint path="c:\temp" outputPattern="profilepic.jpg" responseTimeout="10000" doc:name="Save The Picture "/>
    <json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>

这是堆栈跟踪:

错误 2015-06-10 13:47:07,731 [[internalfacebook].HTTP_Listener_Configuration.worker.01] org mule 异常 DefaultMessagingExceptionStrategy: ****************************************************** ****************************** 消息:无法获取访问令牌。消息负载的类型:NullPayload 代码:MULE_ERROR--2 -------------------------------------------------- ------------------------------ 异常堆栈是: 1. 无法找到请求目标的有效证书路径 (sun.security.provider.certpath.SunCertPathBuilderException) sun.security.provider.certpath SunCertPathBuilder:-1 (null) 2. PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径(sun.security.validator ValidatorException) sun.security.validator PKIXValidator:-1 (null) 3. sun.security.validator ValidatorException: PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径 (javax net ssl SSLHandshakeException) sun 安全 ssl 警报:-1 (java.sun com/j2ee/sdk_1.3/techdocs/api/javax/net/ssl/SSLHandshakeException html) 4. 在 https(colonslashslash) graph facebook com/oauth/access_token (java.lang.RuntimeException) 使用 http 资源时发现错误 org.mule security oauth util HttpUtilImpl:93 (null) 5. 无法获取访问令牌。消息负载的类型:NullPayload (org mule api MessagingException) org.mule.security.oauth.processor.OAuth2FetchAccessTokenMessageProcessor:95(wwwmulesoftrog 文档站点 current3 apidocs org mule api MessagingException html) -------------------------------------------------- ------------------------------ 根异常堆栈跟踪: sun.security.provider certpath SunCertPathBuilderException:无法找到请求目标的有效证书路径 在 sun 安全提供商 certpath SunCertPathBuilder engineBuild(未知来源) 在 java.security cert CertPathBuilder 构建(未知来源) 在 sun.security 验证器 PKIXValidator doBuild(未知来源) + 3 个以上(设置调试级别日志记录或“-Dmule.verbose.exceptions=true”为所有内容) ****************************************************** ****************************** INFO 2015-06-10 13:47:08,183 [[internalfacebook].HTTP_Listener_Configuration.worker.01] org mule 模块 http 内部侦听器 HttpListenerRegistry:未找到请求的侦听器:(GET)/favicon ico INFO 2015-06-10 13:47:08,184 [[internalfacebook].HTTP_Listener_Configuration.worker.01] org mule 模块 http 内部侦听器 HttpListenerRegistry:可用的侦听器为:[(*)/callback/, (*)/]

【问题讨论】:

你能显示完整的堆栈跟踪吗? @DavidDossot - 谢谢 - 添加了堆栈跟踪 - 不得不稍微修改一下 - 无法包含更多网址 @DavidDossot - 再次感谢! 【参考方案1】:

一些事情可能会有所帮助。首先,确保您的 FB 应用程序和 Mule FB 配置在“范围”Ex 上匹配。 “电子邮件,public_profile,user_friends”。

另外,我通过创建一个全局 HTTP 元素作为回调解决了这个问题的一部分。回调 HTTP 路径需要为“/*”。然后在 OAuth 选项卡下的 Authorization FB 组件中,我将回调 HTTP 名称作为 HTTP 连接器引用。

<facebook:oauth-callback-config domain="localhost"
        localPort="5000" remotePort="5000" connector-ref="callback"></facebook:oauth-callback-config>
</facebook:config-with-oauth>
<http:listener-config name="callback" host="0.0.0.0"
    port="5000" basePath="/*" doc:name="HTTP Listener Configuration" />

【讨论】:

以上是关于Mule Facebook 空负载的主要内容,如果未能解决你的问题,请参考以下文章

为啥facebook相册返回一个空数组?

获取 Facebook 好友返回空

Facebook专辑数据在android中返回空

请求 Facebook 好友返回空

Facebook 向 webhook 发送空 POST

Facebook iOS sdk 好友列表返回空