PyDrive 2.0 – AuthenticationError: No code found in redirect
PyDrive 2.0 – AuthenticationError: No code found in redirect
设置
我正在使用 PyDrive 2.0 连接到 Google 驱动器 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
工作目录 /Users/mypath/access_google_drive
包含 client_secrets.json
,看起来像
{"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"]}}
我用 xxx
.
替换了真正的 client_id
和 client_secret
问题
当浏览器(Safari 14.0)显示Gdrive api link wants to access your Google Account
时,我点击Allow
,过程似乎卡住了。
20 秒左右后,显示以下错误,
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
我该如何解决这个问题?
我正在将 connect_google_drive_api()
导入另一个脚本,比如脚本 x.py
。
connect_google_drive_api()
函数和 x.py
都有行 os.chdir('/Users/my/fol/ders/access_google_drive')
将工作目录设置为 client_secrets.json
所在的位置。
使用以下代码,我实际上建立了连接,没有任何问题,
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
正试图从 Jupiter 笔记本中 运行 此代码。当我将浏览器从 Safari(14.0.1) 切换到 Chrome(87.0.4280.88)
时,我能够成功进行身份验证
设置
我正在使用 PyDrive 2.0 连接到 Google 驱动器 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
工作目录 /Users/mypath/access_google_drive
包含 client_secrets.json
,看起来像
{"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"]}}
我用 xxx
.
client_id
和 client_secret
问题
当浏览器(Safari 14.0)显示Gdrive api link wants to access your Google Account
时,我点击Allow
,过程似乎卡住了。
20 秒左右后,显示以下错误,
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
我该如何解决这个问题?
我正在将 connect_google_drive_api()
导入另一个脚本,比如脚本 x.py
。
connect_google_drive_api()
函数和 x.py
都有行 os.chdir('/Users/my/fol/ders/access_google_drive')
将工作目录设置为 client_secrets.json
所在的位置。
使用以下代码,我实际上建立了连接,没有任何问题,
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
正试图从 Jupiter 笔记本中 运行 此代码。当我将浏览器从 Safari(14.0.1) 切换到 Chrome(87.0.4280.88)
时,我能够成功进行身份验证