api密钥,客户端ID和服务帐户之间有什么区别?

时间:2016-08-27 13:09:04

标签: php symfony google-analytics google-api-php-client difference

我需要从我的Symfony 2应用程序访问Google的服务,即Google Analytics,因此我必须使用Google api客户端(版本2)。在访问Google Analytics的信息之前,我必须在Google API控制台中创建API密钥,客户端ID或服务帐户。

最后,我创建了一个服务帐户,并下载了一个文件。 Google api客户端使用此文件授予对我的Google Analytics帐户及其各自收集信息的访问权限。

我的问题是:

  1. api密钥,客户端ID和服务帐户有什么区别?

  2. 何时创建/使用其中一个,为什么?

  3. 我没有看到任何详尽的文章解释了我在这个问题上的要求。

2 个答案:

答案 0 :(得分:10)

这个帖子很旧,但仍在添加信息。将来可能会帮助别人。

Google需要使用唯一标识符将其与您的项目(使用您的Android软件包)绑定以进行身份​​验证并管理流量或配额。

Oauth和API密钥是这样的唯一标识符。

OAuth 2.0客户端ID :如果您的应用程序使用的是OAuth 2.0协议,请使用OAuth客户端ID。 OAuth用于创建Access令牌,而令牌又是唯一标识符。但是,用户需要同意。 https://developers.google.com/identity/protocols/OAuth2

API密钥: API密钥是您使用控制台生成的唯一标识符。优点是用户不需要用户操作或同意。但是,与OAuth不同,您无法使用API​​密钥进行授权。当您想要的数据是公开的并且不需要用户身份验证时使用API​​密钥,例如Google地图。

服务帐户:诸如Prediction API和Google Cloud Storage等Google API可以代表您的应用程序执行操作,而无需访问用户信息。在这些情况下,您的应用程序需要向API证明自己的身份,但不需要用户同意。同样,在企业方案中,您的应用程序可以请求对某些资源进行委派访问。 对于这些类型的服务器到服务器交互,您需要一个服务帐户。 https://developers.google.com/identity/protocols/OAuth2#serviceaccount

答案 1 :(得分:8)

API密钥对不访问个人数据的API进行身份验证。

客户端ID 使用您的Google帐户进行身份验证。

当您不想使用自己帐户(或任何真人帐户)的登录数据时,服务帐户会对您的应用程序进行身份验证。

您仍需要将服务帐户添加到要使用该服务帐户访问的任何Google服务。