with_redirect_urisets the redirect URI for applications that receive the redirect themselves. It was alwayshttp://localhost:<port>.TokenDetailsincludes the OAuth2 access token, and the newapi_tokenfunction exchanges one for an API token, so an application can replace an expired API token without sending the user through authorization.
TokenDetails gains a field, which breaks code that constructs it.
Split from #6.