--- title: "Tokens" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Tokens} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` # REDCap API tokens REDCap API tokens are equivalent to your username and password. They should never be shared with anyone. Ideally, they should never be directly written in an R script, especially if you plan on sharing it in the future. **Never commit a file containing your token on git or GitHub because this will forever be in the history.** If there is ever any doubt in your mind you should quickly regenerate your token on the REDCap website. If you are working on a *real* REDCap project it's good practice to regenerate your token periodically, such as once a week, just to be safe. Precisely because tokens are sensitive, REDCapSync is designed to only reference the name of your token, such as "REDCAPSYNC_FIRST_PROJECT". If REDCapSync ever wants to use the token to make an API call to REDCap, it will check `Sys.getenv("REDCAPSYNC_FIRST_PROJECT")`. By default are token names start with "REDCAPSYNC_", followed by the `project_name` you chose in `setup_project()`. Below demonstrates how to set and check your tokens... ## 1. Setting Your Token using User Environment Variables (preferred) You may find want to reuse a token, and you may have several projects, so a convenient way to store the tokens in a separate location. One way to do this is your personal .Renviron file. Again, you should check always confirm the location of this file and make sure it's not a part of any cloud storage or git or GitHub. You can use `usethis::edit_r_environ()` to semi-permanently save your token. Each time you launch an R session this file will run and your token will be visible to you if specifically called with `Sys.getenv("REDCAPSYNC_FIRST_PROJECT")`. 1. Open the .Renviron file with `usethis::edit_r_environ()` 2. Add the token like this... `REDCAPSYNC_FIRST_PROJECT = "faKeTokeN"` 3. Save the file and Close 4. Restart R Session (Session tab or `.rs.restartR()`). 5. Confirm with `Sys.getenv("REDCAPSYNC_FIRST_PROJECT")` ```{r, eval=FALSE} #Install usethis if you don't have it. #install.packages("usethis") usethis::edit_r_environ() # Now save your token.... (without the comment symbol '#') # REDCAPSYNC_FIRST_PROJECT = "faKeTokeN" # Save the file and Close # Restart R Session (session tab) # .rs.restartR() # this will also restart R session for you. Sys.getenv("REDCAPSYNC_FIRST_PROJECT") # now should contain your token ``` The only reference to your token that is ever made or saved in REDCapSync is with its name. For example, any REDCap project object will have the token name at `project$token_name`. In the future, we may set our token in a different way. ## 2. Setting Your Token using `keyring` package By default REDCapSync will use keyring = NULL, which is your OS system default and is typically unlocked by default while you are logged in. ```{r, eval=FALSE} project <- load_project("TEST_CLASSIC") project$set_keyring_token() # now enter token in pop-up # internally the package checks ... #1. Sys.getenv() token <- Sys.getenv(project$.internal$token_name) #2. followed by keyring token <- keyring::key_get(service = config$keyring.service(), username = project$project_name, keyring = config$keyring()) # you could set with the following; not preferred because token in script # if you do this set in securely in file that no one can ever see; never github! keyring::key_set_with_value(service = config$keyring.service(), username = project$project_name, password = "VeryNOTsecureWayToSetYourTOKEN", keyring = config$keyring()) ``` You can change default configuration to give you more fine-tuning of keyrings using configuration settings... ```{r, eval=FALSE} options(redcapsync.config.keyring = "REDCapSync") # with this kind of method you could define multiple tokens in a private/secret # .R file which can be sourced to set all tokens in akeyring. Can also be # locked and unlocked (see keyring webstite for details) ``` ## 3. Setting Your Token for One Session You can set manually with base R. Unless you specifically set the token `Sys.getenv("REDCAPSYNC_FIRST_PROJECT")` will be blank. ```{r, eval=FALSE} # Set your token manually # again having this in a script is not advised but possible Sys.setenv(REDCAPSYNC_FIRST_PROJECT="a_FaKe_TOkEn") # Get your token Sys.getenv("REDCAPSYNC_FIRST_PROJECT") #>[1] "a_FaKe_TOkEn" ``` Now the token is set for this R session only. If you restarted R, it would be blank again. # Testing Your Token (optional) If you are ever having any issues with your token, you can test your project object with `project$test_token()`. ```{r, eval=FALSE} project <- load_project("TEST_CLASSIC") # replace project name with yours project$test_token() ``` # Additional Resources -