如何更改Google API"服务帐户"姓名/电子邮件地址

时间:2015-04-29 01:24:25

标签: oauth google-api google-oauth google-api-client google-developers-console

我正在使用Google API在Google驱动器上创建电子表格。

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

这一切都很好。

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

这可能吗?   -

It is this random number. I want it to be branded. Is this possible?

2 个答案:

答案 0 :(得分:5)

您无法更改服务帐户的电子邮件地址,也无法为其提供真实的用户名。 service account电子邮件地址由Google在Google Developer console中创建。

enter image description here

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

如果可以的话,我确实认为你的意思很好。

答案 1 :(得分:2)

Google服务帐户允许您模拟现有的用户帐户(对于某些服务)。我还没有在Google云端硬盘上对其进行测试,但我已将其与网站管理员工具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 

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