【问题标题】:Single oauth token and secret to access multiple services from google单一的 oauth 令牌和秘密从谷歌访问多个服务
【发布时间】:2012-02-21 13:17:10
【问题描述】:

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

【问题讨论】:

    标签: oauth google-api


    【解决方案1】:

    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 联系人 API 的访问令牌,那么稍后作为同一应用程序请求 Google Profile API 的访问令牌,您最终将获得两个访问令牌,并且两者都不能用于访问其他 API。 Facebook 至少有礼貌地向您返还一个访问令牌,该令牌授予您对迄今为止授予的所有权限的访问权限。

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

    如果您想要进行紧密、多方面的集成,Google API 当前设置为失败且分散。

    【讨论】:

    • 这可能是一个较晚的响应,但可以澄清多个范围的一些问题是什么?我经常使用多个范围,但没有发现任何问题。这个问题纯粹是关于范围授予不具有附加性的问题吗?您始终可以 ping googleapis.com/oauth2/v1/tokeninfo 以查看令牌具有哪些范围,然后将您的新范围添加到其中。足够简单的解决方法。但是,一般来说,提前请求所有范围是最简单和最容易的,这样作为开发人员和最终用户的清洁工更容易。
    • 避免“一刀切”的标记。帮助用户了解流程并增加他们批准您的访问请求的可能性的推荐最佳实践是在需要访问时使用尽可能少的范围。因此,与 arun 相比,您应该在授权完成的每个时间点使用离散令牌。以我的经验,这并没有导致管理的“噩梦”。您应该存储由用户和 api 范围键入的刷新令牌,以便您知道在哪种情况下使用哪个。图书馆应该负责获取访问令牌。
    • 当您将其与 Facebook 的 API 进行比较时,例如,它允许您稍后请求其他范围,返回一个令牌,该令牌授予用户随着时间的推移授予的全部范围,我觉得很难相信您认为处理多个令牌是优越的。我希望从文本中可以清楚地看出“一刀切”令牌是不好的,但我确实认为,当您稍后“及时”请求更多权限时,您不应该因为必须处理多个令牌而受到惩罚。很高兴这对你来说不是一场噩梦;也许我应该添加“YMMV”:)
    • 这在 2012 年可能是正确的,但从最近几年开始,Google 增加了增量范围,允许您在需要时收集额外的权限。生成的新访问令牌也具有先前增量的所有范围。阅读更多 - developers.google.com/identity/protocols/oauth2/…
    猜你喜欢
    • 2012-04-28
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多