---
title: "Authentication with rtoot"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Authentication with rtoot}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

# Obtain and use a token

When a function in `rtoot` can't find a valid token on your computer, it automatically starts authentication.
If you want to start the process manually, you can do so by calling:

```{r auth, eval=FALSE}
library(rtoot)
auth_setup()
```

By default, the token is stored in a directory R has determined to make sense for you and it is called "rtoot_token.rds".
So you do not need to worry about it if you are only using `rtoot` on your local machine and you are only using one token.

If you do not change the `path` argument of `auth_setup()` the tokens get stored in the location returned by `tools::R_user_dir("rtoot", "config")`.
Look there, if you want to copy a token to a different computer (ideally in the directory returned by `tools::R_user_dir("rtoot", "config")` on the new machine).

If you want to use multiple tokens, you should change the name of the file the token is saved in:

```{r name, eval=FALSE}
auth_setup(name = "account1")
```

To use this token, you can either read it into your environment and provide it to each function:

```{r token, eval=FALSE}
token <- readRDS(file.path(tools::R_user_dir("rtoot", "config"), "account1.rds"))
get_status(id = "109297677620300632", instance = "mastodon.social", token = token)
```

Or you can set the default token in the options at the start of a session:

```{r options, eval=FALSE}
options("rtoot_token" = file.path(tools::R_user_dir("rtoot", "config"), "account1.rds"))
```

# Environment variable

For advanced users, you can also store your token as an environment variable (envvar). You can either obtain a token by calling

```{r clipboard, eval = FALSE}
auth_setup(clipboard = TRUE)
```

Or, if you already have a token

```{r convert, eval = FALSE}
token <- readRDS(file.path(tools::R_user_dir("rtoot", "config"), "account1.rds"))
content <- convert_token_to_envvar(token)
```

Paste the content from clipboard to your configuration file. If you don't have access to clipboard, inspect `content`.
