Reputation: 1971
Set-up
I'm using PyDrive 2.0 to connect to the Google Drive API.
def connect_google_drive_api():
import os
# use Gdrive API to access Google Drive
os.chdir('/Users/my/fol/ders/access_google_drive')
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # client_secrets.json need to be in the same directory as the script
drive = GoogleDrive(gauth)
return drive
The working directory /Users/mypath/access_google_drive
contains the client_secrets.json
, which looks like,
{"web":{"client_id":"xxx","project_id":"invoice-creation-290413","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"xxx","redirect_uris":["http://localhost:8080/"],"javascript_origins":["http://localhost:8080"]}}
where I replaced the real client_id
and client_secret
with xxx
.
Issue
When the browser (Safari 14.0) shows Gdrive api link wants to access your Google Account
and I click Allow
, the process seems to be stuck.
After 20 seconds or so, the following error is shown,
Failed to find "code" in the query parameters of the redirect.
Try command-line authentication
Traceback (most recent call last):
File "<ipython-input-36-792f41ab7318>", line 1, in <module>
gauth.LocalWebserverAuth()
File "/opt/anaconda3/lib/python3.7/site-packages/pydrive2/auth.py", line 125, in _decorated
code = decoratee(self, *args, **kwargs)
File "/opt/anaconda3/lib/python3.7/site-packages/pydrive2/auth.py", line 273, in LocalWebserverAuth
raise AuthenticationError("No code found in redirect")
AuthenticationError: No code found in redirect
How do I solve this?
Upvotes: 4
Views: 2833
Reputation: 1
Was trying to run this code from a Jupiter notebook. I was able to successfully authenticate when I switched browsers from Safari(14.0.1) to Chrome(87.0.4280.88)
Upvotes: 0
Reputation: 1971
I was importing connect_google_drive_api()
into another script, say script x.py
.
Both the connect_google_drive_api()
function and x.py
had the line os.chdir('/Users/my/fol/ders/access_google_drive')
to set the working directory to where the client_secrets.json
was.
With the following code, I actually make a connection without any issue,
def connect_google_drive_api():
# use Gdrive API to access Google Drive
from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # client_secrets.json need to be in the same directory as the script
drive = GoogleDrive(gauth)
return drive
Upvotes: 1