Add a dedicated error class for OAuth response parsing errors #596
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Not all OAuth providers in the wild return spec-compliant responses in the case of an error. A prominent example is Facebook, but I've seen issues with Snowflake OAuth's token exchange flow, too. Posit Connect is not well-behaved here, either.
I've also seen weird issues in the past like authentication failues resulting in redirects to human-readable HTML pages rather than proper OAuth2 error response JSON.
All this to say: I think it can be really useful to have access to the original response object when trying to diagnose an issue.
So this commit adds a dedicated
httr2_oauth_parse
error class and embeds the response object in it. This allows consumers to write code that handles these errors with a lot more context:Unit tests are included.