use exchange token pattern for OAuth session cookies
Setting cookies on 302 redirects from cross-site OAuth flows is
unreliable. Instead, redirect to frontend with a short-lived exchange
token, then the frontend POSTs to /api/exchange which sets the cookie
on a normal same-origin response.
Follows the same pattern as plyr.fm's auth flow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>