Search code examples
google-calendar-apimulesoft

mulesoft google connector to create an event


I'm getting below error when trying to create a google event from anypoint studio using google connector.

OAuth authorization dance not yet performed for resourceOwnerId null

Basically to test this functionality, I did below

  1. I took a listener connector (path:/hello) and configured with local host 8081
  2. Dragged google calendar event insert connector and configured with below details
    1. Base url: https://www.googleapis.com/calendar/v3
    2. consumer secret : Entered corporate clent id
    3. Consumer secret:Entered secret key
    4. Authorization url : https://accounts.google.com/o/oauth2/auth
    5. Access token url : https://accounts.google.com/o/oauth2/token
    6. Scopes: https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.events.readonly https://www.googleapis.com/auth/calendar.readonly https://www.googleapis.com/auth/calendar.settings.readonly
    7. Call back path : /oauth2callback
    8. Authorize path : /authorize
    9. external callback url : http://localhost:8081/oauth2callback

I left remaining below fields empty in the google calendar connecter.

  1. Resource Owner id
  2. Before
  3. after
  4. Object store

In between, HTTP Listener and Google calendar events Insert connecter, I placed Transform message and written below Dataweave

%dw 2.0
output application/json
---
{
    summary: payload.summary,
    start: {
        dateTime: payload.start.dateTime,
        timeZone: payload.start.timeZone
    },
    end: {
        dateTime: payload.end.dateTime,
        timeZone: payload.end.timeZone
    }
}

Below is the JSON input I'm giving from the postman, url being http://localhost:8081/hello

{
   "end": {
        "datetime": "2022-05-19T16:00:00+05:30",
        "timezone":Asia/Chennai
    },
    "start": {
        "datetime": "2022-05-19T14:00:00+05:30",
        "timezone":Asia/Chennai
    },
       "summary":"First PO from Mulesoft Google connector",
       "description":"First desc from Mulesoft Google connector",
       "location":"Hyderabad",
    "attendees":[
         {
             "email":"testmail@email.com"
         }
    ]
}

I'm using anypoint studio 7.8.0.

Thanks in advance.


Solution

  • You need to start the OAuth dance first, to get the access token. You can start it by hitting the Authorize path that you have configured in your app, which in your case is http://localhost:8081/authorize

    After that you will be redirected to Google sign in page. If the Google oauth credentials are configured correctly the mule app will get the access token and use it for the future requests.