Add _metadata.get_project_id.
diff --git a/google/auth/_default.py b/google/auth/_default.py
index 74b96b3..356780b 100644
--- a/google/auth/_default.py
+++ b/google/auth/_default.py
@@ -172,7 +172,7 @@
     if _metadata.ping(request=request):
         # Get the project ID.
         try:
-            project_id = _metadata.get(request, 'project/project-id')
+            project_id = _metadata.get_project_id(request=request)
         except exceptions.TransportError:
             _LOGGER.warning(
                 'No project ID could be determined from the Compute Engine '
diff --git a/google/auth/compute_engine/_metadata.py b/google/auth/compute_engine/_metadata.py
index 6d13a54..a107015 100644
--- a/google/auth/compute_engine/_metadata.py
+++ b/google/auth/compute_engine/_metadata.py
@@ -128,6 +128,23 @@
                 url, response.status, response.data), response)
 
 
+def get_project_id(request):
+    """Get the Google Cloud Project ID from the metadata server.
+
+    Args:
+        request (google.auth.transport.Request): A callable used to make
+            HTTP requests.
+
+    Returns:
+        str: The project ID
+
+    Raises:
+        google.auth.exceptions.TransportError: if an error occurred while
+            retrieving metadata.
+    """
+    return get(request, 'project/project-id')
+
+
 def get_service_account_info(request, service_account='default'):
     """Get information about a service account from the metadata server.
 
diff --git a/tests/compute_engine/test__metadata.py b/tests/compute_engine/test__metadata.py
index 4cc3e55..6a45c42 100644
--- a/tests/compute_engine/test__metadata.py
+++ b/tests/compute_engine/test__metadata.py
@@ -126,6 +126,20 @@
         headers=_metadata._METADATA_HEADERS)
 
 
+def test_get_project_id(mock_request):
+    project = 'example-project'
+    request_mock = mock_request(
+        project, headers={'content-type': 'text/plain'})
+
+    project_id = _metadata.get_project_id(request_mock)
+
+    request_mock.assert_called_once_with(
+        method='GET',
+        url=_metadata._METADATA_ROOT + 'project/project-id',
+        headers=_metadata._METADATA_HEADERS)
+    assert project_id == project
+
+
 @mock.patch('google.auth._helpers.utcnow', return_value=datetime.datetime.min)
 def test_get_service_account_token(utcnow, mock_request):
     ttl = 500
diff --git a/tests/test__default.py b/tests/test__default.py
index 747bfa4..e244b3d 100644
--- a/tests/test__default.py
+++ b/tests/test__default.py
@@ -214,7 +214,8 @@
 @mock.patch(
     'google.auth.compute_engine._metadata.ping', return_value=True)
 @mock.patch(
-    'google.auth.compute_engine._metadata.get', return_value='example-project')
+    'google.auth.compute_engine._metadata.get_project_id',
+    return_value='example-project')
 def test__get_gce_credentials(get_mock, ping_mock):
     credentials, project_id = _default._get_gce_credentials()
 
@@ -233,7 +234,7 @@
 @mock.patch(
     'google.auth.compute_engine._metadata.ping', return_value=True)
 @mock.patch(
-    'google.auth.compute_engine._metadata.get',
+    'google.auth.compute_engine._metadata.get_project_id',
     side_effect=exceptions.TransportError())
 def test__get_gce_credentials_no_project_id(get_mock, ping_mock):
     credentials, project_id = _default._get_gce_credentials()