diff --git a/pydata_google_auth/cache.py b/pydata_google_auth/cache.py
index 13b9457..cad9097 100644
--- a/pydata_google_auth/cache.py
+++ b/pydata_google_auth/cache.py
@@ -25,9 +25,11 @@ def _get_default_credentials_path(credentials_dirname, credentials_filename):
     str
         Path to the Google user credentials
     """
+    config_path = None
+
     if os.name == "nt":
-        config_path = os.environ["APPDATA"]
-    else:
+        config_path = os.getenv("APPDATA")
+    if not config_path:
         config_path = os.path.join(os.path.expanduser("~"), ".config")
 
     config_path = os.path.join(config_path, credentials_dirname)

diff --git a/tests/unit/test_cache.py b/tests/unit/test_cache.py
index d2fdea2..1e513c3 100644
--- a/tests/unit/test_cache.py
+++ b/tests/unit/test_cache.py
@@ -34,6 +34,19 @@ def test_import_unwriteable_fs(module_under_test, monkeypatch):
     assert module_under_test.NOOP is not None
 
 
+def test__get_default_credentials_path_windows_wo_appdata(
+    module_under_test, monkeypatch
+):
+    # Ensure default path returns something sensible on Windows, even if
+    # APPDATA is not set. See:
+    # https://github.com/pydata/pydata-google-auth/issues/29
+    monkeypatch.setattr(os, "name", "nt")
+    monkeypatch.delenv("APPDATA", raising=False)
+
+    creds_path = module_under_test._get_default_credentials_path("dirname", "filename")
+    assert creds_path is not None
+
+
 def test__save_user_account_credentials_wo_directory(module_under_test, fs):
     """Directories should be created if they don't exist."""
 

APPDATA environment variable must exist when running on windows
The os.environ['APPDATA'] lookup in Cache.py line 29 always gets run, even if credentials are passed.  `%APPDATA%` is not guaranteed to be set, as it is not on the windows 2012R2 server service accounts that I have been attempting to use.

The resulting error message when APPDATA is not set is quite opaque.  Especially as the call which triggers the error, like my pandas.to_gbq() call, could have explicitly passed credentials.

This problem can be worked-around with 
`IF "%APPDATA%"=="" set APPDATA="PYDATA-GOOGLE-AUTH needs this to be set"`
tests/unit/test_cache.py::test_import_unwriteable_fs tests/unit/test_cache.py::test__get_default_credentials_path_windows_wo_appdata tests/unit/test_cache.py::test_ReadWriteCredentialsCache_sets_path tests/unit/test_cache.py::test_WriteOnlyCredentialsCache_sets_path