cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MartinHutchcpa
Helper III
Helper III

Xero Oauth2.0

Xero released their Oauth2.0 authenticated access to their API recently.

I am trying to write some flows to use this.

If I use Postman to generate the access code and then use it in flow, all works fine.

 

However the code needs to be refreshed every 30 minutes.

Running the token refresh call in Postman works fine, however it fails in Flow. "error": "unsupported_grant_type"

 

Post to https://identity.xero.com/connect/token

Header

"Authorization": "Basic Rjd..." - valid (checked) token 

"Content-Type": "application/x-www-form-urlencoded"

 

The body of the http call is :-

{
"grant_type":"refresh_token",
"refresh_token":"0134e4a53c...",
"client_id":"F7B7...",
"client_secret":"GEfl..."
}

 

Can anyone shed any light on this please?

38 REPLIES 38
v-alzhan-msft
Community Support
Community Support

Hi @MartinHutchcpa ,

 

Could you please share a screenshot of the configuration of your flow?

 

Best regards,

Alice       

Community Support Team _ Alice Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi Alice,

Here you go.

 

Capture.JPG

 

 

https://developer.xero.com/documentation/oauth2/auth-flow

This links to the refresh token syntax.

LukePWilkins
Helper III
Helper III

Did you ever get this working? I assume, if you are trying the refresh token, you had made the initial authentication work? Could you share that HTTP flow please?

Hi Luke,

I used Postman to get an initial token. The token is saved in a SharePoint list.

I have a flow that refreshes this token and saves it back to the list, this runs every 15 mins.

My flows then use this token from the SharePoint list to do their thing.

Hope this helps.

LukePWilkins
Helper III
Helper III

First off, thank you for replying to a post from 2020.

If my thinking is correct, the initial auth is performed via postman, and the PA flow retrieves the token saved in a sharepoint list?

 

I will explain my scenario. Google form time entry, which essentially was saved to a google sheet. I could extract the new rows and post to a sharepoint list, for time entry for a client. They have since moved to WorkFlowMax; i'm trying to create a similar process.

 

I would need to auth once per day to WFM via API and then POST add time. I imagine being in the position of auth once, and then refresh once per 24 hours, in order to post new data. 

 

You worked out how to refresh such token via PowerA, referencing the original question? 

 

Please can we keep the conversation going, I don't want to give up on my objective! 

cheers
Luke

Hi Luke,

For Xero, the refresh PA is very simple, not sure about Google api endpoint though.

LukePWilkins
Helper III
Helper III

The Google Sheet aspect is easy, as there is a connector.

I have used PostMan for the first time, and have my access token now. 

So I assume I can now bring that into PowerAutomate and work on the refresh cycle. 

Once that is done, I can look at adding new time entry into work flow max.

 

Any pointers with the refresh flow for the token please?

Hi Luke,

I store my token in a Dynamics 365 table, although I have used Sharepoint in the past.

MartinHutchcpa_0-1620969428165.png

 

LukePWilkins
Helper III
Helper III

Awesome! Over on GIT is a Postman environment to import. Has all the workings of getting started with the Worflow max api - (GitHub - XeroAPI/workflowmax-postman-oauth2: A postman collection for use with WorkflowMax's API and...

 

So I can get to speed with interacting with the API via Postman and then bring my learnings into Power Automate.

cheers for the screenshot 

LukePWilkins
Helper III
Helper III

@MartinHutchcpa , what is the redirect URL back to Power Automate that you use?

MartinHutchcpa
Helper III
Helper III

I didnt need one as I was working in private mode

LukePWilkins
Helper III
Helper III

Please could you post the breakdown of the HTTP flow, where you are refreshing the token.

I can't work out what should be in the Body and the Headers, however much I try I get Invalid_Client or Invalid_Request, where trying to refresh

 

Also, how is this string made up: Do I use the text as is, but replace the id and secret?

"Basic " + base64encode(client_id + ":" + client_secret)
LukePWilkins
Helper III
Helper III

Its this Authorization string which is throwing me now! I'm getting back Invalid_Client in PA. Could you give me some pointers please on how you have encoded it? I see at the first screen shot, its an expression with Basic and then I assume your base64encode string for client id and pass - how did you encode it?

LukePWilkins
Helper III
Helper III

OK I sorted it!!! Wow... talk about learning.

 

In the HTTP call I formed the body as form-data (reference from the way POSTMAN was forming the refresh request) 

 

grant_type=refresh_token&refresh_Token=REFRESHTOKEN&client_id=CLIENTID&client_secret=CLIENTSECRET

 

No need for Authorization header and the base64encode stringScreenshot 2021-05-17 181252.png

Screenshot 2021-05-17 181509.png

Thanks @WillPage (Adding formData to HTTP Request - Power Platform Community (microsoft.com))

 

Thanks @MartinHutchcpa 

Nebulas
Helper II
Helper II

Hi @LukePWilkins (et all)

 

Credit for your persistence here.  I am trying to do exactly the same thing and can't seem to get past "{"error":"invalid_client"}".

 

I have successfully authenticated, refreshed tokens, retrieved invoices, and created invoices using Postman.

 

I have created a single flow with the three variables below and validated that the values are all correct and matching what is in Postman.

 

I have also tried formatting the body in JSON (noting to change content-type) however this returns 'invalid request'.

 

When I format the body exactly how you have set out, or copy/pasting from Postman both result in 'invalid client'.

 

My process to test this scenario is as follows:

  1. Generate new token in Postman
  2. Copy access_token and refresh token to environment variables in Postman
  3. Run authentication in Postman (sign in etc)
  4. Run Refresh token in Postman
  5. Run Get connections to obtain and store client_id in environment variables in Postman
  6. Test retrieve and create Invoices in Postman
  7. Ensure token is not expired
  8. Run my refresh token flow in PowerAutomate

 

Hoping you can shed some light on this for me. Here are some of my questions:

  1. There was one auto-generated KEY-VALUE in Postman called "Host" and it mentions that if this is removed it will likely result in a 400 error. It doesn't look like you have included this. Did this cause you any problems?
  2. Did you have to first create a flow for steps 1-3 in my process above in order to run the Refresh Token flow?

 

Here is the the output of my flow:

Screen Shot 2021-06-02 at 4.41.19 pm.png

 

Any help would be greatly appreciated.

LukePWilkins
Helper III
Helper III

I have the access token and refresh token saved in a txt file on OneDrive. ClientID and Secret are hardcoded in the variables. RefreshToken, retrieves the refresh token from OneDrive, then its a POST to the API

Screenshot 2021-06-05 093219.png

Nebulas
Helper II
Helper II

@LukePWilkins 

 

Thanks for the response!

 

I ended up moving client_id, client_secret, xero-tenant-id, access_token, and refresh_token values to a Davaverse table.

 

I am 99.99999% sure these were all the exact same values that I had initialised as variables in my original flow.

 

Then the only change I made is that I noticed you had an uppercase T in the body for 'refresh_Token'.

 

The flow now works perfectly.  I also added a Do Until status code = 200 so it will retry if it fails for any reason. The flow then updates the dataverse table with the new tokenset (access and refresh) details.

 

My flow now looks like this:

Screen Shot 2021-06-05 at 5.23.03 pm.png

 

Thanks again for your response!

LukePWilkins
Helper III
Helper III

Do you have a typo in Grant_type refresh_tocken???? 

I have my flow scheduled to run every 29 mins and refresh the access token. 

Glad you got it sorted! Two people extra now working with the API via Power Automate

LukePWilkins
Helper III
Helper III

@Nebulas , i'm going to look into storing data in the dataverse, which feels as much better option than onedrive TXT file!!!

Helpful resources

Announcements

Check out the Copilot Studio Cookbook today!

We are excited to announce our new Copilot Cookbook Gallery in the Copilot Studio Community. We can't wait for you to share your expertise and your experience!    Join us for an amazing opportunity where you'll be one of the first to contribute to the Copilot Cookbook—your ultimate guide to mastering Microsoft Copilot. Whether you're seeking inspiration or grappling with a challenge while crafting apps, you probably already know that Copilot Cookbook is your reliable assistant, offering a wealth of tips and tricks at your fingertips--and we want you to add your expertise. What can you "cook" up?   Click this link to get started: https://aka.ms/CS_Copilot_Cookbook_Gallery   Don't miss out on this exclusive opportunity to be one of the first in the Community to share your app creation journey with Copilot. We'll be announcing a Cookbook Challenge very soon and want to make sure you one of the first "cooks" in the kitchen.   Don't miss your moment--start submitting in the Copilot Cookbook Gallery today!     Thank you,  Engagement Team

Announcing Power Apps Copilot Cookbook Gallery

We are excited to share that the all-new Copilot Cookbook Gallery for Power Apps is now available in the Power Apps Community, full of tips and tricks on how to best use Microsoft Copilot as you develop and create in Power Apps. The new Copilot Cookbook is your go-to resource when you need inspiration--or when you're stuck--and aren't sure how to best partner with Copilot while creating apps.   Whether you're looking for the best prompts or just want to know about responsible AI use, visit Copilot Cookbook for regular updates you can rely on--while also serving up some of your greatest tips and tricks for the Community. Check Out the new Copilot Cookbook for Power Apps today: Copilot Cookbook - Power Platform Community.  We can't wait to see what you "cook" up!    

Welcome to the Power Automate Community

You are now a part of a fast-growing vibrant group of peers and industry experts who are here to network, share knowledge, and even have a little fun.   Now that you are a member, you can enjoy the following resources:   Welcome to the Community   News & Announcements: The is your place to get all the latest news around community events and announcements. This is where we share with the community what is going on and how to participate.  Be sure to subscribe to this board and not miss an announcement.   Get Help with Power Automate Forums: If you're looking for support with any part of Power Automate, our forums are the place to go. From General Power Automate forums to Using Connectors, Building Flows and Using Flows.  You will find thousands of technical professionals, and Super Users with years of experience who are ready and eager to answer your questions. You now have the ability to post, reply and give "kudos" on the Power Automate community forums. Make sure you conduct a quick search before creating a new post because your question may have already been asked and answered. Galleries: The galleries are full of content and can assist you with information on creating a flow in our Webinars and Video Gallery, and the ability to share the flows you have created in the Power Automate Cookbook.  Stay connected with the Community Connections & How-To Videos from the Microsoft Community Team. Check out the awesome content being shared there today.   Power Automate Community Blog: Over the years, more than 700 Power Automate Community Blog articles have been written and published by our thriving community. Our community members have learned some excellent tips and have keen insights on the future of process automation. In the Power Automate Community Blog, you can read the latest Power Automate-related posts from our community blog authors around the world. Let us know if you'd like to become an author and contribute your own writing — everything Power Automate-related is welcome.   Community Support: Check out and learn more about Using the Community for tips & tricks. Let us know in the Community Feedback  board if you have any questions or comments about your community experience. Again, we are so excited to welcome you to the Microsoft Power Automate community family. Whether you are brand new to the world of process automation or you are a seasoned Power Automate veteran - our goal is to shape the community to be your 'go to' for support, networking, education, inspiration and encouragement as we enjoy this adventure together.     Power Automate Community Team

Hear what's next for the Power Up Program

Hear from Principal Program Manager, Dimpi Gandhi, to discover the latest enhancements to the Microsoft #PowerUpProgram, including a new accelerated video-based curriculum crafted with the expertise of Microsoft MVPs, Rory Neary and Charlie Phipps-Bennett. If you’d like to hear what’s coming next, click the link below to sign up today! https://aka.ms/PowerUp  

Tuesday Tip | How to Report Spam in Our Community

It's time for another TUESDAY TIPS, your weekly connection with the most insightful tips and tricks that empower both newcomers and veterans in the Power Platform Community! Every Tuesday, we bring you a curated selection of the finest advice, distilled from the resources and tools in the Community. Whether you’re a seasoned member or just getting started, Tuesday Tips are the perfect compass guiding you across the dynamic landscape of the Power Platform Community.   As our community family expands each week, we revisit our essential tools, tips, and tricks to ensure you’re well-versed in the community’s pulse. Keep an eye on the News & Announcements for your weekly Tuesday Tips—you never know what you may learn!   Today's Tip: How to Report Spam in Our Community We strive to maintain a professional and helpful community, and part of that effort involves keeping our platform free of spam. If you encounter a post that you believe is spam, please follow these steps to report it: Locate the Post: Find the post in question within the community.Kebab Menu: Click on the "Kebab" menu | 3 Dots, on the top right of the post.Report Inappropriate Content: Select "Report Inappropriate Content" from the menu.Submit Report: Fill out any necessary details on the form and submit your report.   Our community team will review the report and take appropriate action to ensure our community remains a valuable resource for everyone.   Thank you for helping us keep the community clean and useful!

Users online (3,031)