我已经测试了 Twitter 和 LinkedIn,我似乎最终能够让这些工作,但我找不到足够的材料来让 Google 连接器工作。当使用谷歌日历连接器时,我试图收集令牌 -#[flowVars['tokenId']]
但值总是以null
. 难道我做错了什么?有人可以帮忙吗?
谢谢,
灰。
我已经测试了 Twitter 和 LinkedIn,我似乎最终能够让这些工作,但我找不到足够的材料来让 Google 连接器工作。当使用谷歌日历连接器时,我试图收集令牌 -#[flowVars['tokenId']]
但值总是以null
. 难道我做错了什么?有人可以帮忙吗?
谢谢,
灰。
为其他遇到同样问题的人回答了我自己的问题-
管理 OAuth 令牌(可选)
配置对象存储
为了保持数据的持久性,您需要将其存储在某个地方,建议您为此使用 ObjectStore。安装 ObjectStore 连接器。在您的应用程序中像这样配置它:
<objectstore:config name="ObjectStore" doc:name="ObjectStore" />
授权后存储令牌
授权舞蹈完成后,您正在调用的服务的 accessTokenId 可用作称为 OAuthAccessTokenId 的流变量。您必须保留此 ID,以便在将来调用连接器时使用它。此示例显示如何将此变量存储到 ObjectStore 中的 key accessTokenId 下。
<flow name="authorize-google" doc:name="authorize-google">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="authorize" doc:name="HTTP"/>
<google-contacts:authorize config-ref="Google_Contacts" doc:name="Authorize GContacts"/>
<objectstore:store config-ref="ObjectStore" key="accessTokenId" value-ref="#[flowVars['OAuthAccessTokenId']]" overwrite="true" doc:name="ObjectStore"/>
</flow>
使用您的访问令牌
对连接器的任何调用都必须从 ObjectStore 加载访问令牌并引用它。此示例显示在继续之前从 ObjectStore 加载它并检查它是否已设置。
<enricher target="#[flowVars['accessTokenId']]" doc:name="Message Enricher">
<objectstore:retrieve config-ref="ObjectStore" key="accessTokenId" defaultValue-ref="#['']" doc:name="Get AccessToken"/>
</enricher>
<expression-filter expression="#[flowVars['accessTokenId'] != '']" doc:name="Is Access Token Set"/>
一旦 accessTokenId 可用作流变量,您就可以在连接器操作中引用它:
<google-contacts:get-contacts config-ref="Google_Contacts" accessTokenId="#[flowVars['accessTokenId']]" />
更多详细信息 - http://www.mulesoft.org/documentation/display/34X/Using+a+Connector+to+Access+an+OAuth+API
这是它在工作室中的样子 - http://imgur.com/DtLodel
谢谢,
灰。