为什么 Google Drive 无法再挂载并且显示浏览器弹出窗口而不是授权链接?

问题描述 投票:0回答:7

从昨天开始,我就遇到了无法再挂载我的Google帐户的问题。

通常,当我运行它时,我会收到一个用于授权自己的链接。现在,当执行代码时,会打开一个额外的浏览器窗口,我应该在其中授权自己。但如果我再做一遍,那就不行了。

使用新的授权弹出窗口,如果我从 Colab 等同一个 Google 帐户安装 Google Drive,它就可以工作。但问题是我的主要 Google Drive 位于 Google Colab 之外的另一个帐户上。通过链接,它以前可以正常工作,没有任何问题。

执行代码并使用新弹出窗口进行授权后,我在 Google Colab 上收到此错误消息:

MessageError
Traceback (most recent call last)
<ipython-input-3-897b42bdb537> in <module>()
     1 #Connect Google Drive
     2 from google.colab import drive
----> 3 drive.mount('/gdrive')

3 frames
/usr/local/lib/python3.7/dist-packages/google/colab/_message.py in read_reply_from_input(message_id, >timeout_sec)
   104         reply.get('colab_msg_id') == message_id):
   105       if 'error' in reply:
--> 106         raise MessageError(reply['error'])
   107       return reply.get('data', None)
   108 

MessageError: Error: credential propagation was unsuccessful

我使用这个代码:

#Connect Google Drive
from google.colab import drive
drive.mount('/gdrive')

授权弹出窗口而不是代码输出中的链接:

为什么授权链接突然不再显示了?也许有任何安全设置?我尝试过几个浏览器。

authentication google-drive-api popup google-colaboratory mount
7个回答
47
投票

更新: 不幸的是,从 2022 年 1 月 20 日起,基于 Blue 解决方案类似解决方案 的小型解决方案不再起作用(参考)。您可以再次使用我的旧解决方案...

更新2: 从 2022 年 3 月 30 日起,我的旧解决方案也不起作用了!我找到了另一个现在有效的解决方案(菲利普的解决方案)。

菲利普的解决方案:

此解决方案基于 Phillip 的帖子。您可以关注他的帖子以获取更多信息。

请按照以下步骤操作:

  1. 运行以下代码:
!sudo add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!sudo apt-get update -qq 2>&1 > /dev/null
!sudo apt -y install -qq google-drive-ocamlfuse 2>&1 > /dev/null
!google-drive-ocamlfuse
  1. 从上一步中,您会收到这样的错误。单击上一条错误消息中的链接并验证您的帐户。

Failure("打开时出错 网址:https://accounts.google.com/o/oauth2/auth?client_id=..。 ”)

  1. 运行以下代码:
!sudo apt-get install -qq w3m # to act as web browser 
!xdg-settings set default-web-browser w3m.desktop # to set default browser
%cd /content
!mkdir drive
%cd drive
!mkdir MyDrive
%cd ..
%cd ..
!google-drive-ocamlfuse /content/drive/MyDrive

您必须收到此消息:

正确检索访问令牌。

我的旧解决方案

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
%cd /content
!mkdir drive
%cd drive
!mkdir MyDrive
%cd ..
%cd ..
!google-drive-ocamlfuse /content/drive/MyDrive

蓝色的解决方案

from google.colab import drive
drive._mount('/content/drive')

15
投票

[编辑] 这不再起作用,因为谷歌已经删除了此功能。 https://github.com/googlecolab/colabtools/issues/2562#issuecomment-1017869732

我也有这个问题。但这解决了问题。 (前面有一个下划线

mount

from google.colab import drive
drive._mount('/content/drive')

3
投票

这是由于新政策。如果您安装的 acc 是不同的 Colab acc,请使用语法使其工作。

from google.colab import drive
drive._mount('/content/drive') 

3
投票

enter image description here

我不断收到错误:MessageError:错误:凭证传播失败

我选择授予弹出窗口中给定的所有权限,并且它有效


2
投票

这个解决方案可能是多余的,因为我不知道你是否解决了你的问题...所以,共享目标 gdrive 和运行 colabpro 的 gdrive 中的两个文件夹,然后添加从目标驱动器到运行 gdrive 的快捷方式,设置运行 gdrive 上的代码来调用添加的快捷方式文件夹名称并“本地”运行代码。这样,colabpro 将在运行帐户上执行代码并将结果存储在您选择的目标驱动器上。这与通过授权码设置目标帐户相同,显然它不再起作用了。需要注意的是,创建快捷方式时,可能需要 5-10 分钟才能在流水账中可见。希望有帮助。干杯! ^^


1
投票

这是 Google Colab Pro 的问题。我有一个专业帐户和一个普通帐户。我的普通帐户按预期工作(带有链接),而我的专业帐户有弹出窗口,给我与 OP 相同的错误。


1
投票

您可以挂载驱动器帐户,与Colab帐户相同。或者,您可以使用

drive._mount('/content/drive')

© www.soinside.com 2019 - 2024. All rights reserved.