This may just make sense to me, but I think it would be nice if auth_url (and potentially pkce and redirect_uri) could be included in auth_params. This would make oauth_client a self-contained object which is easier to pass around, especially in the context of multiple clients.
Current situation:
Currently, when using oauth_client(), auth_url pkce and redirect_uri need to be specified separately in the flow:
github_client <- oauth_client(
id = "",
secret = "",
token_url = "https://github.com/login/oauth/access_token"
)
oauth_flow_auth_code(
client = github_client,
auth_url = "https://github.com/login/oauth/authorize",
redirect_uri = "http://127.0.0.1:1410"
pkce = FALSE
)
Proposed Change
Override arguments specified within auth_params of the oauth_client object, so that the flow can be simplified:
github_client <- oauth_client(
id = "",
secret = "",
token_url = "https://github.com/login/oauth/access_token",
auth_params = list(
auth_url = "https://github.com/login/oauth/authorize",
redirect_uri = "http://localhost:1410",
pkce = FALSE
)
)
oauth_flow_auth_code(client = github_client)
Caveats
The above example would of course break if you attempt a device flow:
oauth_flow_device_code(client = github_client)
Which could be overriden with:
oauth_flow_device_code(client = github_client, auth_url = "https://github.com/login/device/code")
Alternatively, one could have auth_url_auth_code and auth_url_device_code, but this feels more clunky. I think most users will rarely mix auth code and device code flows, but not sure here.
Context
I'm working on a PR draft for Shiny integration that supports multiple providers. During this process, I found it cleaner and more intuitive to provide a list of oauth_clients rather than managing parameters separately for each client. Fully understand there may be good reasons they are separate today.
This may just make sense to me, but I think it would be nice if
auth_url(and potentiallypkceandredirect_uri) could be included inauth_params. This would makeoauth_clienta self-contained object which is easier to pass around, especially in the context of multiple clients.Current situation:
Currently, when using
oauth_client(),auth_urlpkceandredirect_urineed to be specified separately in the flow:Proposed Change
Override arguments specified within
auth_paramsof theoauth_clientobject, so that the flow can be simplified:Caveats
The above example would of course break if you attempt a device flow:
Which could be overriden with:
Alternatively, one could have
auth_url_auth_codeandauth_url_device_code, but this feels more clunky. I think most users will rarely mix auth code and device code flows, but not sure here.Context
I'm working on a PR draft for Shiny integration that supports multiple providers. During this process, I found it cleaner and more intuitive to provide a list of oauth_clients rather than managing parameters separately for each client. Fully understand there may be good reasons they are separate today.