You don’t need. Bubble do all the stuff for you. The only reason in your case to use manual auth, is if you need your user to authenticate with Bubble auth instead OR if you need to access to another user (A) Google data while logged in with another user (B).

If not needed if you already request all needed scopes first

For the manual flow, did you inspect logs? Because you say it stop (and it does often if the workflow fail when doing API request. Sometimes if you enable continue workflow if error, this could help to debug). Logs could also return a more specific error. What I believe however is that you actually send the request as JSON while this expect url form encoded. There’s a lot of option to try to fix that. try to use form-data, or enable querystr checkbox or use body instead with code=<code>&redirect_uri=... and adding header for content-type. Often however, it work by enabling querystr or switchin to form-data