#Task
This command prints the login URL for the API according to your `API_URL` environment variable and waits for you to input the token returned by the API after authenticating with Google. See [Develop Authentication Routes](../../Python%20API/Tasks/Routes/Develop%20Authentication%20Routes.md) for the API implementation:
```go
var authCmd = &cobra.Command{
Use: "auth",
Short: "Login with your Google account to create a user/token",
Long: ``,
Run: func(cmd *cobra.Command, args []string) {
aesPath := filepath.Join(config.ConfigPath, "aes.key")
configJsonPath := filepath.Join(config.ConfigPath, "config.json")
fileContents, err := os.ReadFile(aesPath)
if err != nil {
fmt.Println("Error: ", err)
}
fmt.Printf("Visit \n %slogin\n to login then paste your token here:", "https://"+os.Getenv("API_URL"))
var token string
fmt.Scan(&token)
config.SaveEncryptedConfig(config.Config{AuthToken: token}, fileContents, configJsonPath)
loaded_config, err := config.LoadEncryptedConfig(fileContents, configJsonPath)
if err != nil {
fmt.Println("Error: ", err)
}
fmt.Println(loaded_config.AuthToken)
},
}
```
- Once it reads the token, it calls the `SaveEncryptedConfig()` function in [Config Generation and Token Handling](Config%20Generation%20and%20Token%20Handling.md) and prints it back to you.
From there, you can use all the commands without ever having to deal with the token!