diff --git a/NEWS.md b/NEWS.md index 5fb8b704..3ef555cc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -23,7 +23,8 @@ Snowflake. * Push-button publishing from desktop RStudio is now compatible with Connect - servers hosted on Snowflake. + servers hosted on Snowflake. This includes support for browser-based + authentication during deployment. (#1289) * Added support for using identity federation to authenticate against Connect when running in Posit Workbench, when available. This allows deploying to diff --git a/R/client-connect.R b/R/client-connect.R index 87c81734..6828fc95 100644 --- a/R/client-connect.R +++ b/R/client-connect.R @@ -165,6 +165,15 @@ getSnowflakeAuthToken <- function(url, snowflakeConnectionName) { parsedURL <- parseHttpUrl(url) ingressURL <- parsedURL$host + # Detect when we're running in the Deploy pane of RStudio and enable + # "interactive" temporarily so that external browser authentication is + # permitted. + if (rstudioapi::isBackgroundJob()) { + prev <- getOption("rlang_interactive") + options("rlang_interactive" = TRUE) + on.exit(options("rlang_interactive" = prev)) + } + token <- snowflakeauth::snowflake_credentials( snowflakeauth::snowflake_connection(snowflakeConnectionName), spcs_endpoint = ingressURL