如何将服务帐户密钥凭据的client_email更改为我自己的电子邮件?

时间:2017-05-18 22:34:01

标签: google-api google-oauth google-analytics-api service-accounts

我有2个应用程序,旧应用程序使用Oauth2访问Google AnalyticsAPI。所有当前用户都已授予访问我的域中的电子邮件的权限。

第二个应用程序使用凭据和服务帐户身份验证。 问题是服务帐户密钥的电子邮件使用的是其他域:

  

“client_email”:“xxx-service@xxx.iam.gserviceaccount.com”,

我需要它来使用我的域中已经拥有客户权限的旧电子邮件。

我该怎么做,我已经下载了服务帐户密钥的json文件。

1 个答案:

答案 0 :(得分:1)

Oauth2和服务帐户之间存在差异。

让我们从使用Oauth2的旧应用开始。当用户开始使用应用程序时,他们会显示身份验证表单,要求他们授予应用程序X访问其数据的权限。假设他们接受它,应用程序X现在可以读取数据。应用程序X被赋予刷新令牌,该令牌可用于在以后访问数据。

在后台,Application X的开发人员在Google Developer Console上注册了他们的应用程序,并获得了客户端ID和客户端密钥。当用户对应用程序进行身份验证时,将使用客户端ID和客户端密钥创建刷新令牌。您不能使用不同的客户端ID和客户端密钥,并将其与来自另一个不可互换的应用程序的刷新令牌一起使用。

服务帐户的不同之处在于它们是预先授权的。如果您使用该服务帐户的电子邮件地址,并将其作为用户添加到Google Analytics网站管理部分。服务帐户将有权像其他任何用户一样阅读信息。

澄清/回答。

  1. 您无法选择由Google生成的服务帐户电子邮件地址。
  2. 您无法使用服务帐户访问通过Oauth2授予​​应用程序的数据。它们不可互换。
  3. 如果您可以使用Oauth2访问用户数据,那么您应该使用刷新令牌来访问他们不需要服务帐户的数据。