正在检索为客户端授予的Google API作用域



我们使用混合身份验证流,这样客户端就可以通过JS请求增量授权,并将生成的code传递给我们的API服务器进行处理。

我们需要的是:

  1. 用户可以通过刷新令牌或访问令牌使用哪些作用域

  2. 一种在$client->authenticate($code)响应中包括当前作用域的方法(这样我们就可以将它们与刷新令牌一起存储)

  3. 一种确定Google对$client->authenticate($code)的响应中刚刚授予哪个范围的方法(这样我们就可以将其附加到该用户的存储列表中)

我们希望在集成页面上提供一个列表,供用户选择使用每个功能(日历、联系人、驱动器),并提供一个已启用功能的清晰列表,此外,如果用户访问了尚未授权的功能,还会进行提示。除此之外,我不敢相信这不是"一件事"。

与您处于同一位置。。。如果您命中:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

它将返回一个具有"scope"参数的JSON响应,该参数是访问令牌的所有已授予作用域的空格分隔列表。

虽然我意识到这已经有点过时了,但对于那些从现在开始通过谷歌找到这一点的人来说,可能值得注意的是,从例如PHP客户端库方法$client->fetchAccessTokenWithAuthCode($_GET['code'])接收到的访问令牌捆绑包实际上包含一个活动作用域的列表,其关键字为"scope"。您应该能够在不需要进一步调用API的情况下解析它。

下面是我的访问令牌捆绑包的一个示例:

{
    "access_token": "xxxxxxxxxxx",
    "expires_in": 3600,
    "refresh_token": "xxxxxxxxxxxx...... ",
    "scope": "https://www.googleapis.com/auth/userinfo.profile openid https://www.googleapis.com/auth/userinfo.email",
    "token_type": "Bearer",
    "id_token": "xxxxxxxxx...... ",
    "created": 1576300135
}

注意上面的"scope"参数。

这似乎在任何地方都没有记录。

和您一样,几年后,我还没有找到提供此功能的客户端库方法;你是对的,这似乎相当基本(事实上,比较两个作用域列表的功能是理想的,包括"个人资料"one_answers"电子邮件"作用域的扩展,提示谷歌用户!)。

[很抱歉在这个例子中切换到PHP,但我怀疑访问令牌捆绑包的格式是相同的,所以应该可以使用类似的方法]

相关内容

  • 没有找到相关文章

最新更新