谷歌Colab - 无法再挂载谷歌云盘 - 浏览器弹出窗口(谷歌云盘桌面版)而非链接在输出的代码中用于授权。

35

从昨天开始我就遇到了这样一个问题,我无法再挂载我的Google帐户。通常情况下,在运行时,我会得到一个链接来授权自己访问。但是现在,在执行代码时,一个额外的浏览器窗口被打开,要求我进行授权。但如果我重试,它就无法工作。您知道为什么这个授权链接突然不再显示吗?有可能是任何安全设置吗?我尝试了几种浏览器。

编辑:使用新的授权弹出窗口,如果我从与Colab相同的Google帐户中挂载Google Drive,则可以正常工作。但问题是我的主Google Drive位于另一个帐户上而不是Google Colab。用链接方式曾经可以毫无问题地使用...

编辑2:我已经通过共享所需文件夹来解决此问题,并且现在可以通过我的Colab Google Drive帐户访问它。但我仍然没有找到回复链接的方法。

在代码执行和使用新弹出窗口进行授权后,我在Google Colab上收到以下错误信息:

MessageError Traceback (most recent call last) in () 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')

在代码输出中弹出授权弹窗而不是链接


1
没有遇到同样问题的人吗?主要问题在于,当执行代码时,他希望在单独的浏览器窗口中使用“Google Drive for Desktop”进行授权,而不仅仅是输出链接。你可能可以在某个地方切换它通过这个路径进行身份验证吗? - Tim
1
我也遇到了同样的问题! - belal_bh
我正在回答,但是看到了你的编辑 :) 我建议你将其发布为答案,因为这对其他人会有帮助。我遇到了同样的问题,但没有找到在不同账户中使用它的方法。之前它要求Google Stream的权限,现在则是Google Drive的权限,所以在处理权限方面肯定发生了一些变化。 - Francisco Cruz
嗨,Francisco,是的,如果我从同一个Google帐户中挂载Google驱动器,它就可以工作,但问题是,我的所有文件都在另一个共用帐户上。现在,我已经这样解决了:我已经为我的其他帐户发布所需的文件夹,并且现在可以通过我的Colab Google驱动器帐户访问它了。但是我没能找回链接。 - Tim
6个回答

44

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

更新2:从2022年3月30日开始,我的旧解决方案也无法使用!我找到了另一个可用的解决方案(Phillip的解决方案)。

Phillip的解决方案:

这个解决方案基于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')

1
你好,有趣的解决方案!我现在已经以这样的方式解决了它,即我已经为我的其他帐户发布了所需的文件夹,并且现在可以通过我的Colab Google Drive帐户访问它。 - Tim
1
嗨,阿里雷扎,是的,如果我输入验证码两次,它就可以工作了 :) - Tim
看起来这个解决方案现在已经失效了...有什么想法吗? - Fidel I. Schaposnik
1
截至2022年5月21日,运行得非常顺畅。 - Shaida Muhammad
1
菲利普的解决方案有效!!!对于那些即使使用了解决方案仍然遇到问题的人,请确保在Chrome上执行它!我之前一直在使用Firefox,但Drive认证总是失败! - Dan
显示剩余15条评论

15

谢谢,这对我很有效。我的代码是:drive._mount('/content/gdrive',force_remount=True) - 0xDEADBEEF
直到今天它都对我有效,现在出现了“ValueError:mount failed:invalid oauth code”错误,有什么建议吗? - kawingkelvin
这个功能已经失效了,因为谷歌已经将其移除。https://github.com/googlecolab/colabtools/issues/2562#issuecomment-1017869732 - Blue

3
由于新政策的缘故,如果您的账户与 Colab 账户不同,请使用该语法使其正常工作。
from google.colab import drive
drive._mount('/content/drive') 

2

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


1

您可以挂载与Colab帐户相同的驱动器帐户,或者您可以使用drive._mount('/content/drive')。


1
这是一个关于Google Colab Pro的问题。我有一个Pro账户和一个普通账户。我的普通账户可以正常工作(带有链接),而我的Pro账户则弹出窗口,给我显示与OP相同的错误信息。

1
是的,似乎是这样。但并非所有专业账户都受到影响。链接仍然提供给我的同事。 - Tim
@Tim 相当令人沮丧。对于专业账户有没有解决办法? - DataPlug
2
是的,如果我分享了所需的文件夹到我的Colab Drive帐户,那么我可以通过我的Colab Google Drive帐户从其他帐户访问该文件夹。但我仍然没有成功获取链接。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接