单个oauth令牌和秘密可以从谷歌访问多个服务

use*_*379 4 oauth google-api

我正在使用oauth访问google提供的不同服务.我能够为每个服务生成令牌.但我想生成单个令牌来使用谷歌的多个服务.谁能告诉我这方面的解决方案?

maj*_*oat 5

https://developers.google.com/accounts/docs/OAuth2

根据Google OAuth2文档,可以通过设置多个范围来实现此目的,但要注意,这不是一种愉快的体验.

发出请求时,请将scope参数设置为多个范围,每个范围由一个空格分隔.

示例:"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.google.com/m8/feeds"

您目前可以在此处找到范围列表:https://developers.google.com/gdata/faq

不幸的是,API访问不是附加的,这意味着,如果您要求Google Contacts API的访问令牌,那么稍后当同一个应用程序要求获取Google Profile API的访问令牌时,您最终会获得两个访问令牌,并且都不能用于访问其他API.Facebook至少有礼貌地为您提供一个访问令牌,该令牌授予访问目前为止授予的所有权限的权限.

因此,您需要跟踪多个访问令牌(一个可怕的噩梦,因为它们很快就会过期),或者预先要求您的所有权限,这是一个用户体验灾难.

如果您想要进行紧密的,多方面的集成,那么Google API目前已经设置为分散且完全不同.

  • 这可能是一个迟到的回应,但可以澄清多个范围的一些问题是什么?我经常使用多个范围,但没有发现任何问题。问题是否纯粹是关于范围拨款不是附加的?您始终可以 ping https://www.googleapis.com/oauth2/v1/tokeninfo 以查看令牌具有的范围,然后向其中添加新范围。足够简单的解决方法。但是,一般来说,提前请求所有范围是最简单和最容易的,这样您作为开发人员和最终用户的清洁工就更容易了。 (2认同)