Maintenance is being performed on Zoom's support site on November 4 that may cause support impact. For more information, please click here.
Everything you need to work together, all in one place.
Explore Zoom One's Collaboration ToolsConnect virtually from anywhere with Zoom Meetings
Collaborate together with Zoom Chat
Call the world with Zoom Phone
Create and brainstorm with Zoom Whiteboard
Rich conversation analytics to improve sales
Send and receive messages and calendar invitations
Bring fluid interactions to hybrid teams with Zoom Huddles
Remove the hassle of traditional scheduling with Zoom Scheduler
Innovative video solutions for every meeting space.
Bring meeting spaces online with Zoom Rooms
Conference Room Connector links existing rooms to Zoom
Innovative solutions for every space
Solutions to host impactful virtual and hybrid experiences.
Find a Solution for Every EventHost hybrid and virtual events with Zoom Events
Elevate your brand with single session events powered by Zoom Sessions
Broadcast at scale with Zoom Webinars
Host and attend classes, group events, and more OnZoom
An omnichannel cloud solution optimized for video.
Engage customers with Zoom Contact Center
Deliver intelligent support with conversational AI
Optimize contact center agent performance and engagement
Zoom solutions elevate collaboration across vertical use cases.
Discover Zoom Industry SolutionsEnabling exciting new ways to teach, learn, and connect globally
Transforming client engagement and employee experiences
Improving collaboration between agencies, ministries and constituents
Connecting care, collaboration, and medical innovation
Real-time communication, anywhere in the world
Bridging the in-store and online experiences
Expert support and services for all your design, strategy, implementation, event, and hardware needs.
Global Services
Hardware purchase and subscription options
Flexible subscription plans for hardware
Protect certain data at rest with your own encryption keys
An open platform that allows developers to build Zoom apps and integrations.
Explore thousands of apps that work with or within Zoom
Documentation for building with Zoom's technology using SDKs, APIs, and webhooks
Post your questions and get help from our developer community
Zoom Partners bring Zoom's communications platform to market through alliance, sales, and service partnerships.
Explore Zoom's technology ecosystem
Find a trusted Partner
Learn about Zoom's Partner Programs
Access marketing & sales resources
Login to the Partner Portal and click 'Learn'
Discover new ways to use Zoom solutions to power your modern workforce.
Access expert-led tutorials on Zoom products and features.
Network with other Zoom users, and share your own product and industry insights.
Get documentation on deploying, managing, and using the Zoom platform.
Keep your Zoom client up to date to access the latest features.
Download CenterDownload hi-res images and animations to elevate your next Zoom meeting.
Browse Backgrounds2022-11-26 04:32 PM - edited 2022-11-26 05:04 PM
Good morning zoomerinos!
Hit a bit of a roadblock, and there is some discussion of this error on Google, but none of the advice worked for me. And other folks getting the issue seem to be using grant_type=refresh_token whereas I'm using grant_type=authorization_code. So I thought I'd thought I would ask for help here...
I am setting up a marketplace app with Zoom OAuth. I am able to redirect to the Zoom Authorization page just fine, and I return to my dev app just fine with an authorization `code` in the query params.
However, when I try to the POST to https://zoom.us/oauth/token, I get a 400 HTTP response with:
{"reason":"Invalid authorization code","error":"invalid_grant"}
Here's the CURL of the request that's failing:
curl \
-H 'Authorization: Basic aWxRc3VXaThUank3S3hmakdzZURpZzpyNmc5ZjRKdmw3YndOM0c3SXc3TUdiQm1pRHloZng5ZA==' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'code=DjVBukFT1o1SZSYLINJRBavYXnnWiZESQ&grant_type=authorization_code&redirect_uri=https%3A%2F%2Fkernel-hvprcz4n3-kernel-fyi.vercel.app%2Fapi%2Fzoom%2Foauth%2Fsave' \
'https://zoom.us/oauth/token'
I did try:
✅ Manually encoding my client id/secret into base64 and checking the Authorization header matches
✅ Trying both the production client id/secret and the development ones
✅ Tried both JSON encoding and form encoding the body (currently is generated using URLSearchParams which should trigger fetch to use form encoding.
✅ Double checking all my redirect URIs are set properly in the App Marketplace
✅ Reading carefully through the portion of the docs about requesting the access token
✅ Getting a fresh authorization code
But I can't quite find any advice on what might be going wrong. Anyone have any ideas? Thanks!!
2022-11-26 05:13 PM
Welp, look's like I applied the old "the second you write it up clearly and post it publicly, you will figure out the solution" debugging technique here...
After running through the list of ideas above, I managed to get a 200 response back from https://zoom.us/oauth/token. Things I had missed before I got it right:
And some combination of all of those worked!