单个oauth令牌和密码可从google访问多个服务

单个oauth令牌和密码可从google访问多个服务,oauth,google-api,Oauth,Google Api,我正在使用oauth访问google提供的不同服务。我能够根据每个服务生成令牌。但我想生成一个令牌来使用谷歌的多个服务。 谁能告诉我这个问题的解决方法吗? 根据GoogleOAuth2文档,可以通过设置多个作用域来实现这一点,但请注意,这不是一种愉快的体验 发出请求时,将scope参数设置为多个作用域,每个作用域之间用一个空格分隔 示例:“https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/fee

我正在使用oauth访问google提供的不同服务。我能够根据每个服务生成令牌。但我想生成一个令牌来使用谷歌的多个服务。 谁能告诉我这个问题的解决方法吗?

根据GoogleOAuth2文档,可以通过设置多个作用域来实现这一点,但请注意,这不是一种愉快的体验

发出请求时,将scope参数设置为多个作用域,每个作用域之间用一个空格分隔

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

您当前可以在此处找到作用域列表:

不幸的是,API访问不是可添加的,这意味着,如果您为Google Contacts API请求访问令牌,那么稍后当同一应用程序为Google Profile API请求访问令牌时,您将得到两个访问令牌,并且这两个令牌都不能用于访问其他API。Facebook至少有资格给你一个单一的访问令牌,授予你对迄今为止授予的所有权限的访问权

因此,您不得不跟踪多址令牌(这是一场可怕的噩梦,因为它们很快就会过期),或者提前请求您的所有权限,这是一场用户体验灾难


如果你想进行紧密的、多方面的集成,Google API目前的设置是不完整的。这可能是一个迟来的响应,但可以澄清多个作用域的一些问题是什么?我经常使用多个示波器,没有发现任何问题。这个问题纯粹是关于范围授权不是附加的吗?您可以始终ping以查看令牌的作用域,然后将新作用域添加到令牌中。足够简单的解决方法。但是,一般来说,提前请求所有作用域是最简单和最容易的,这样对于开发人员和最终用户来说就更容易了。避免使用“一刀切”的令牌。建议的最佳做法是,在需要访问时使用尽可能少的作用域,以帮助用户了解该过程并增加他们批准您的访问请求的可能性。因此,与arun不同,您应该在授予的每个时间点使用离散令牌。根据我的经验,这并没有导致一场“噩梦”。您应该存储由用户和api作用域键入的刷新令牌,以便知道在哪种情况下使用哪种令牌。库应该注意获取令牌。当您将它与脸谱网的API进行比较时,例如,它允许您稍后请求附加的范围,返回单个令牌,该令牌授予用户随着时间的推移授予的范围的整体,我发现很难相信您认为处理多个令牌是优越的。我希望从文本中可以清楚地看到,“一刀切”的代币是不好的,但我确实认为,当您稍后“及时”请求更多权限时,您不应该因为必须处理多个代币而受到惩罚。很高兴这不是你的噩梦;或许我应该加上“YMMV”: