mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-07 13:40:46 +00:00
Add service account support to Google Drive (#1761)
Having service account support in the drive document loader would be
nice.
This is already present in the youtube loader.
cb646082ba/langchain/document_loaders/youtube.py (L76-L78)
This commit is contained in:
parent
1a8790d808
commit
80d8db5f60
@ -6,7 +6,8 @@
|
|||||||
# https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com
|
# https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com
|
||||||
# 3. Authorize credentials for desktop app:
|
# 3. Authorize credentials for desktop app:
|
||||||
# https://developers.google.com/drive/api/quickstart/python#authorize_credentials_for_a_desktop_application # noqa: E501
|
# https://developers.google.com/drive/api/quickstart/python#authorize_credentials_for_a_desktop_application # noqa: E501
|
||||||
|
# 4. For service accounts visit
|
||||||
|
# https://cloud.google.com/iam/docs/service-accounts-create
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
@ -22,6 +23,7 @@ SCOPES = ["https://www.googleapis.com/auth/drive.readonly"]
|
|||||||
class GoogleDriveLoader(BaseLoader, BaseModel):
|
class GoogleDriveLoader(BaseLoader, BaseModel):
|
||||||
"""Loader that loads Google Docs from Google Drive."""
|
"""Loader that loads Google Docs from Google Drive."""
|
||||||
|
|
||||||
|
service_account_key: Path = Path.home() / ".credentials" / "keys.json"
|
||||||
credentials_path: Path = Path.home() / ".credentials" / "credentials.json"
|
credentials_path: Path = Path.home() / ".credentials" / "credentials.json"
|
||||||
token_path: Path = Path.home() / ".credentials" / "token.json"
|
token_path: Path = Path.home() / ".credentials" / "token.json"
|
||||||
folder_id: Optional[str] = None
|
folder_id: Optional[str] = None
|
||||||
@ -60,6 +62,7 @@ class GoogleDriveLoader(BaseLoader, BaseModel):
|
|||||||
# Adapted from https://developers.google.com/drive/api/v3/quickstart/python
|
# Adapted from https://developers.google.com/drive/api/v3/quickstart/python
|
||||||
try:
|
try:
|
||||||
from google.auth.transport.requests import Request
|
from google.auth.transport.requests import Request
|
||||||
|
from google.oauth2 import service_account
|
||||||
from google.oauth2.credentials import Credentials
|
from google.oauth2.credentials import Credentials
|
||||||
from google_auth_oauthlib.flow import InstalledAppFlow
|
from google_auth_oauthlib.flow import InstalledAppFlow
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@ -72,6 +75,11 @@ class GoogleDriveLoader(BaseLoader, BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
creds = None
|
creds = None
|
||||||
|
if self.service_account_key.exists():
|
||||||
|
return service_account.Credentials.from_service_account_file(
|
||||||
|
str(self.service_account_key), scopes=SCOPES
|
||||||
|
)
|
||||||
|
|
||||||
if self.token_path.exists():
|
if self.token_path.exists():
|
||||||
creds = Credentials.from_authorized_user_file(str(self.token_path), SCOPES)
|
creds = Credentials.from_authorized_user_file(str(self.token_path), SCOPES)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user