如何在google colab中获取当前帐户名

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

例如,如果我当前的 Colab 实例登录为

[email protected]

是否可以在 ipython 中获取名称“myColab”?

执行此操作的命令是什么?

我想这样做是因为我可能运行两个Colab,它们生成文件,我想用Colab帐户名标记这些文件,这样我就知道哪个帐户生成这些文件。

google-colaboratory
4个回答
7
投票

默认情况下,后端不对任何特定用户进行身份验证。但是,如果您已经完成了

gcloud auth
流程,您可以像这样检索电子邮件地址:

https://colab.research.google.com/drive/1VVWs_pcjjz2vg0H2Ti6-12FzcCojRF6a

关键片段是:

import requests
gcloud_token = !gcloud auth print-access-token
gcloud_tokeninfo = requests.get('https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=' + gcloud_token[0]).json()
print(gcloud_tokeninfo['email'])

2
投票

或者只需运行以下命令:

!gcloud config get-value account

0
投票

我试图让当前用户通过 GDrive 身份验证登录。我不想推送另一个身份验证,只是为了记录名称。我相信OP也在尝试同样的事情。

我的理论是,使用谷歌驱动器登录,创建一个文件,然后读取文件的创建者。这没有按预期运行,它只返回 root:root。但这可能会激发一个比我更了解 python 和 colab 的人如何实现这项工作的想法。

如果您在目录

MyDrive
中创建文件,GDrive 可以看到该文件,并且显示所有者是
Me
,将鼠标悬停在我上方会显示电子邮件帐户。 GDrive 知道是谁制造的。我只是不知道如何让 colab 输出真正的文件所有者,即使对于
MyDrive
中已经存在的文件也是如此。我认为这与象征性的坐骑有关,但是..必须有办法。

代码

print("test", file=open("owner.txt", "a"))
from pathlib import Path
path = Path("owner.txt")
owner = path.owner()
group = path.group()
print(f"{path.name} is owned by {owner}:{group}")

输出

owner.txt is owned by root:root

0
投票

首先,使用 Google 帐户对用户进行身份验证,这是在 Colab 环境中访问 Google Cloud 服务和 API 所必需的:

from google.colab import auth
auth.authenticate_user()

然后,使用下面的代码向 Google OAuth2 令牌信息端点发送请求(使用从

gcloud auth print-access-token
获取的令牌)以获取有关令牌的信息,包括
email address
:

import requests
gcloud_token = !gcloud auth print-access-token
gcloud_tokeninfo = requests.get('https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=' + gcloud_token[0]).json()
print(gcloud_tokeninfo['email'])
© www.soinside.com 2019 - 2024. All rights reserved.