使用OAuth 2.0访问谷歌的API

网友投稿 810 2022-05-29

使用OAuth 2.0访问谷歌的API

谷歌的API使用的OAuth 2.0协议进行身份验证和授权。谷歌支持常见的OAuth 2.0场景,如那些Web服务器,安装,和客户端应用程序。

首先,获得来自OAuth 2.0用户端凭证谷歌API控制台。那么你的客户端应用程序请求从谷歌授权服务器的访问令牌,提取令牌从响应,并发送令牌到谷歌的API,您要访问。对于使用OAuth 2.0与谷歌的互动演示(包括利用自己的客户端证书的选项),实验用的OAuth 2.0游乐场。

该页面提供的OAuth 2.0用户授权方案的概述,谷歌的支持,并提供链接到更详细的内容。有关使用OAuth 2.0认证的详细信息,请参阅ID连接。

注: 由于得到执行正确的安全隐患,我们强烈建议您与谷歌的OAuth 2.0端点交互时使用OAuth 2.0库。它是利用他人提供的精心调试代码的最佳实践,这将有助于保护您和您的用户。欲了解更多信息,请参阅客户端库。

基本步骤

访问使用OAuth 2.0谷歌的API时,所有的应用程序都遵循一个基本模式。在高层次上,你遵循四个步骤:

1.获取的OAuth从谷歌API控制台2.0凭据。

访问 谷歌API控制台 获取的OAuth 2.0凭据如已知的谷歌和你的应用程序客户端ID和客户端密钥。设定值的变化基于你正在建设什么类型的应用程序。例如,javaScript应用程序并不需要一个秘密,但在Web服务器应用程序一样。

2.从谷歌授权服务器的访问令牌。

在应用程序能够使用谷歌API来访问私人数据,它必须获得令牌授予访问该API的访问。单个接入令牌可以授予不同程度的访问到多个API。所谓的可变参数scope控制组的资源和操作的,一个访问令牌许可证。在访问令牌请求,你的应用程序中发送一个或多个值scope的参数。

有几种方法,使这个请求,他们基于应用的您正在构建的类型而有所不同。例如,一个JavaScript应用程序可能会请求令牌使用的浏览器重定向到谷歌的访问,而一个应用程序,没有浏览器使用Web服务请求的设备上安装。

一些请求需要在用户与他们的谷歌帐户登录的验证步骤。登录后,用户被询问他们是否愿意承认你的应用程序请求的权限。这个过程被称为用户的同意。

使用OAuth 2.0访问谷歌的API

如果用户授予许可,谷歌授权服务器发送您的应用程序的访问令牌(或授权代码,你的应用程序可以使用,以获得访问令牌)。如果用户不授予权限,服务器返回一个错误。

它一般是要求最佳实践作用域递增,在当时的访问是必需的,而不是前面。例如,在用户按下“购买”按钮要支持购买一个应用程序不应该要求谷歌钱包访问; 看到增量授权。

3.发送令牌的API访问。

后的应用程序获得的访问令牌时,它发送所述令牌的谷歌API在HTTP授权头。它可以发送标记为URI查询字符串参数,但我们不建议这样做,因为URI参数可以在没有完全安全的日志文件结束。此外,它是很好的休息的做法,以避免造成不必要的URI参数的名称。

访问令牌仅适用于所描述的一组操作和资源的scope令牌请求。例如,如果一个访问令牌发布了Google+的API,它不授予访问谷歌联系人API。你可以,但是,发送访问令牌的Google+ API多次进行类似的操作。

4.刷新访问令牌,如果需要的话。

访问令牌寿命有限。如果应用程序需要访问超出了单个访问令牌的使用寿命谷歌的API,它能够获得刷新令牌。刷新令牌可以让你的应用程序,以获得新的访问令牌。

注: 在安全的长期存储保存刷新令牌,并继续只要他们保持有效使用它们。限制适用于每个客户端用户发出的组合刷新令牌的数量,以及每个用户在所有的客户,而这些限制是不同的。如果您的应用程序请求足以刷新令牌走过去的限制之一,老年刷新令牌停止工作。

方案

Web服务器应用程序

该谷歌的OAuth 2.0端点支持的Web服务器应用程序使用的语言和框架,如PHP,Java和Python和Ruby,和ASP.NET。

当你的应用程序重定向浏览器的谷歌URL授权序列开始; 该URL包括查询参数指示所请求的访问类型。谷歌处理用户身份验证,会话选择和用户同意。其结果是一个授权码,其应用可以换取的访问令牌和刷新令牌。

应用程序应该保存令牌以供将来使用刷新和使用令牌来访问谷歌的API访问。一旦访问令牌过期后,应用程序使用令牌来获得一个新的刷新。

有关详细信息,请参阅使用OAuth 2.0 Web服务器应用程序。

安装的应用程序

上安装的设备,诸如计算机,移动设备,和片剂谷歌的OAuth 2.0端点支持的应用程序。当您创建通过客户端ID 谷歌API控制台,指定这是已安装的应用程序,然后选择的Android,Chrome浏览器,iOS或“其他”作为应用程序类型。

该方法得到了客户端ID,并在某些情况下,客户端机密,你在你的应用程序的源代码中嵌入。(在这种情况下,客户端机密显然不是当作一个秘密。)

当你的应用程序重定向浏览器的谷歌URL授权序列开始; 该URL包括查询参数指示所请求的访问类型。谷歌处理用户身份验证,会话选择和用户同意。其结果是一个授权码,其应用可以换取的访问令牌和刷新令牌。

应用程序应该保存令牌以供将来使用刷新和使用令牌来访问谷歌的API访问。一旦访问令牌过期后,应用程序使用令牌来获得一个新的刷新。

有关详细信息,请参阅使用OAuth 2.0安装的应用程序。

客户端(JavaScript)的应用

该谷歌的OAuth 2.0端点支持,在浏览器中运行的JavaScript应用程序。

当你的应用程序重定向浏览器的谷歌URL授权序列开始; 该URL包括查询参数指示所请求的访问类型。谷歌处理用户身份验证,会话选择和用户同意。

其结果是的访问令牌,客户机应该包括它在谷歌API请求之前验证。当令牌过期后,应用重复该过程。

有关详细信息,请参阅使用OAuth 2.0客户端应用程序。

上限量输入设备的应用程序

即如游戏机,摄像机和打印机上有限的输入设备运行谷歌的OAuth 2.0端点支持的应用程序。

授权序列以使Web服务请求,谷歌URL授权码的应用程序。该响应包含几个参数,包括URL和该应用程序显示给用户的代码。

用户获得来自设备的URL和代码,然后切换到一个单独的设备或计算机具有更丰富的输入能力。用户启动浏览器,导航到指定的URL,在日志,并进入码。

同时,应用调查谷歌的网址在指定的时间间隔。用户批准的访问后,从谷歌服务器的响应中包含的访问令牌和刷新令牌。应用程序应该保存令牌以供将来使用刷新和使用令牌来访问谷歌的API访问。一旦访问令牌过期后,应用程序使用令牌来获得一个新的刷新。

有关详细信息,请参阅使用OAuth 2.0设备。

服务帐户

谷歌的API,如预测API和谷歌云存储可以代表你的应用程序的行为,而无需访问用户信息。在这种情况下,你的应用程序需要证明自己的身份的API,但没有用户许可是必要的。同样,在企业的情况下,你的应用程序可以请求一些资源委派访问。

对于这些类型的服务器到服务器交互,你需要一个服务帐户,这是属于你的应用程序,而不是对个人最终用户的账户。您的应用程序调用代表服务帐户的谷歌的API,并且不需要经过用户同意。(在非服务帐户的情况,您的应用程序调用的API谷歌代表最终用户的,有时也需要用户的同意。)

注意:这些服务帐户的情况需要应用程序创建和加密签名JSON网络令牌(JWTs)。我们强烈建议您使用库来执行这些任务。如果您不使用抽象令牌创建和签名库写这样的代码,你可能会作出这样会对您的应用程序的安全造成严重影响的错误。对于支持此方案库的列表,请参阅 服务帐户的文档。

服务帐户的凭据,您从谷歌API控制台获取,包括生成的电子邮件地址,它是独一无二的,客户端ID,以及至少一个公钥/私钥对。您可以使用客户端ID和一个私钥来创建签名JWT,构建以适当的格式的访问令牌请求。然后,应用程序将令牌发送请求到谷歌的OAuth 2.0授权服务器,它返回的访问令牌。该应用程序使用令牌来访问谷歌的API。当令牌过期后,应用重复该过程。

有关详细信息,请参阅服务帐户的文档。

注:虽然您可以使用服务帐户的应用程序,从A G套房域中运行,服务帐户不是你的Google+帐户套房的成员并没有受到由G套房管理员设置的域策略。例如,在G套房管理控制台设定政策来限制摹套房最终用户的共享文件的域之外并不适用于服务帐户的能力。

令牌大小

令牌的尺寸可以变化,可达以下限制:

授权码:256个字节

访问令牌:2048个字节

刷新令牌:512个字节

谷歌保留这些限制范围内调整令牌大小的权利,你的应用程序必须相应地支持可变令牌大小。

令牌过期

您必须编写代码来预测这种可能性,即授予刷新令牌可能不再工作。刷新令牌可能会停止对这些原因的工作:

用户已撤销你的应用程序的访问。

刷新令牌没有被使用六个月。

用户更改密码,并刷新令牌包含Gmail的作用域。

用户帐户已超过批准(现场)刷新令牌的最大数量。

目前的每个客户每个用户帐户50个刷新令牌限制。如果达到了极限,自动创建令牌的新的刷新无效毫无预兆令牌最古老的刷新。此限制并不适用于服务帐户。

还有一个更大限度上刷新的总数令牌的用户帐户或服务帐户可以在所有的客户都有。大多数普通用户都不会超过这个限制,但开发者的测试帐户可能。

如果您需要授权多个程序,机器或设备,一个解决方法是限制客户端,你每个用户帐户的授权,以15或20。如果你是一个数量 摹套房管理员,您可以创建其他管理员用户和使用它们授权部分客户端。

客户端库

下面的客户端库与流行的框架,这使得实施的OAuth 2.0简单整合。更多的功能将随着时间的推移被添加到库中。

谷歌API客户端库的Java

谷歌API客户端库的Python

谷歌API客户端库围棋

谷歌API客户端库的.NET

谷歌API客户端库的Ruby

谷歌API客户端库PHP

谷歌API客户端JavaScript库

GTMAppAuth - OAuth客户端库为Mac和iOS

API web前端

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从实践到预见,大咖眼中的云原生2.0有点不同
下一篇:《Office 2019高效办公三合一从入门到精通 : 视频自学版》 —2.2.2剪切和复制文本
相关文章