Mule 3.5-谷歌OAuth2示例



我正在尝试将Mule 3.5连接到Google API(任务、日历等),但我在OAuth2身份验证方面遇到了各种问题。

有人能给我一个Mule项目的示例.xml文件和一个工作的Google OAuth2示例(也许还有Google API控制台中的设置)吗。

链接也可以。

您需要在Google Developer帐户中创建一个应用程序(https://console.developers.google.com/)使用"创建项目"按钮。注意你的项目ID,你需要在谷歌连接器配置中使用它。

然后,您需要单击应用程序并转到API&验证。请确保您所需的API设置为"ON"状态。在这种情况下,您可能想要打开日历,而不需要关闭任何其他功能。请注意,大量调用日历服务可能会产生成本或配额限制。

同样在API&在Google开发者控制台左侧的Auth部分,您需要选择凭据。然后单击红色按钮创建新客户端ID。这将为您提供两条关键信息:

  1. 客户端ID-这会进入Mule中谷歌连接器中的"consumerKey"
  2. 客户秘密-这会进入骡子中的"consumerSecret"连接器

另一个需要设置的重要内容是重定向URI。这需要类似于:

http://localhost:8081/oauth2callback

这需要与您在连接器配置中输入的内容相匹配。如果你在防火墙后面运行Mule服务器,你需要配置代理之类的东西,这样回调就可以到达你的服务器。

这是一个我已经设法开始工作的粗略例子。请确保根据需要替换clientID clientSecret和应用程序名称。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json"
  xmlns:https="http://www.mulesoft.org/schema/mule/https"
      xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
  xmlns:objectstore="http://www.mulesoft.org/schema/mule/objectstore"
  xmlns:http="http://www.mulesoft.org/schema/mule/http"
  xmlns:google-calendars="http://www.mulesoft.org/schema/mule/google-calendars"
  xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
  xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-current.xsd      
          http://www.mulesoft.org/schema/mule/core 
          http://www.mulesoft.org/schema/mule/core/current/mule.xsd
          http://www.mulesoft.org/schema/mule/http 
          http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
          http://www.mulesoft.org/schema/mule/google-calendars 
          http://www.mulesoft.org/schema/mule/google-calendars/1.0/mule-google-calendars.xsd
          http://www.mulesoft.org/schema/mule/objectstore 
          http://www.mulesoft.org/schema/mule/objectstore/1.0/mule-objectstore.xsd
          http://www.mulesoft.org/schema/mule/ee/tracking 
          http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
          http://www.mulesoft.org/schema/mule/https 
          http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd
          http://www.mulesoft.org/schema/mule/json 
          http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<!-- The 'consumerKey' is Client ID of you google application
     The 'consumerSecret' is the Client Secret of the google application
     The 'applicationName' is the application name you supplied (or Google created for you) when you created your application
     on the google developer console
    -->
<google-calendars:config-with-oauth
    name="Google_Calendars"
    consumerKey="replace-with-client-ID"
    consumerSecret="replace-with-client-secret" doc:name="Google Calendars"
    applicationName="replace-with-application-name">
    <!-- The values here need to match the redirect URL you authorized for your Google Application
         In this case the callback URL would be http://localhost:8081/ouath2callback
     -->
    <google-calendars:oauth-callback-config
        domain="localhost" localPort="8081" path="oauth2callback" remotePort="8081" />
        </google-calendars:config-with-oauth>

<!-- This is the objectstore that stores your Auth key which is used in the second flow -->
<objectstore:config name="ObjectStore" doc:name="ObjectStore" />
<!-- The first flow is executed when you go to http://localhost:8080/oauth-authorize
     It initiates the Google authentication and if successful gets the auth key and puts it into the object store -->
<flow name="authorizationAndAuthenticationFlow" doc:name="authorizationAndAuthenticationFlow">
    <http:inbound-endpoint exchange-pattern="request-response"
        host="localhost" port="8080" path="oauth-authorize" doc:name="HTTP" />
    <google-calendars:authorize config-ref="Google_Calendars"
        doc:name="Google Calendars" />
    <!-- Your Auth token is store in the key 'accessTokenId' -->    
    <objectstore:store config-ref="ObjectStore" key="accessTokenId"
        value-ref="#[flowVars['OAuthAccessTokenId']]" overwrite="true"
        doc:name="ObjectStore" />
</flow>
<!-- This flow can be called after the authentication is complete. It uses the previously stored token and to retreive your
     Calendars and return them as JSON -->
<flow name="getInformationFromCalendar" doc:name="getInformationFromCalendar">
    <http:inbound-endpoint exchange-pattern="request-response"
        host="localhost" port="8081" doc:name="HTTP" />
    <!-- The enricher adds the access token to your message -->
    <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" />
    <!-- gets your first 200 calendars using the accessToken that you enriched the message with-->
    <google-calendars:get-calendar-list
        config-ref="Google_Calendars" maxResults="200"
        pageToken="#[flowVars['GoogleCalendar_NEXT_PAGE_TOKEN']]" doc:name="Google Calendars"
        accessTokenId="#[flowVars['accessTokenId']]" />
    <json:object-to-json-transformer
        doc:name="Object to JSON" />
</flow>
</mule>

Mule的Google连接器套件有一个完整的示例,包括Mule XML配置。

此后,我们发布了关于如何使用OAuth连接器的文档。如果有帮助,请告诉我们。

相关内容

  • 没有找到相关文章

最新更新