8

我正在使用 Google API 在 Google Drive 上创建电子表格。

  • 我的应用有一个链接,上面写着“下载到 Google Doc”
  • 该应用程序将文件发送到谷歌文档并与用户共享。
  • 然后用户可以在谷歌文档中看到它。

这一切都很好。

问题是共享文档的服务帐户的身份。它是一个生成的 id。我希望它被标记到我的应用程序中。

这可能吗?-

就是这个随机数。 我希望它被标记。 这可能吗?

4

2 回答 2

7

您不能更改服务帐户电子邮件地址,也不能为其提供真实的用户名。服务帐户电子邮件地址由 Google 在Google Developer 控制台中创建。

在此处输入图像描述

更改电子邮件地址的唯一方法是删除它并创建一个新地址,但您将再次被 Google 创建的那个卡住。我怀疑客户 ID 和电子邮件地址是用于识别您的应用程序的一对。类似于客户端 ID 和客户端密码,但我无法验证。

我确实明白你的意思,如果我们可以的话,那就太好了。

于 2015-04-30T06:23:26.843 回答
2

Google 服务帐户确实允许您模拟现有用户帐户(对于某些服务)。我没有在 Google Drive 上测试过它,但我已经将它与 Webmaster tools API 一起使用。可以在此处找到说明:https ://developers.google.com/identity/protocols/OAuth2ServiceAccount

总而言之,在创建服务帐户凭据时,您可以使用“应用程序为其请求委派访问的用户的电子邮件地址”指定“sub”参数。您请求访问的帐户必须存在并且有权访问您请求的服务。

在上面的链接中,Google 提供了 Java、Python 和 HTTP/REST 的示例,以下是 Python 示例:

credentials = SignedJwtAssertionCredentials(client_email, private_key,
'https://www.googleapis.com/auth/sqlservice.admin',
sub='user@example.org')

我正在使用 Ruby google-api-client gem (0.9.pre3) 并且 ServiceAccountCredentials 构造函数没有将 'sub' 参数传递给其父类,因此必须在另一个步骤中指定它:

client = Google::Auth::ServiceAccountCredentials.new(json_key_io: json_key_io, scope: scope)
client.update!(sub: 'user@example.org')
client.fetch_access_token!
service = Google::Apis::WebmastersV3::WebmastersService.new
service.authorization = client 

使用此代码,我可以使用我的服务帐户进行身份验证,并且我可以访问这些站点

于 2015-09-29T20:19:55.333 回答