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

Google api 为客户端检索Google API授予的作用域,google-api,google-api-php-client,Google Api,Google Api Php Client,我们使用的是混合身份验证流,因此通过JS请求客户端进行增量授权,并将生成的code传递到我们的API服务器进行处理 我们需要的是: 用户可以通过刷新令牌或访问令牌使用哪些作用域 在$client->authenticate($code)响应中包含当前作用域的方法(这样我们就可以用刷新令牌存储它们) 一种确定Google对$client->authenticate($code)的响应中刚刚授予了哪个作用域的方法(因此我们可以将其附加到该用户的存储列表中) 我们希望在“集成”页面上提供一个列表,供用

我们使用的是混合身份验证流,因此通过JS请求客户端进行增量授权,并将生成的
code
传递到我们的API服务器进行处理

我们需要的是:

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

  • $client->authenticate($code)
    响应中包含当前作用域的方法(这样我们就可以用刷新令牌存储它们)

  • 一种确定Google对
    $client->authenticate($code)
    的响应中刚刚授予了哪个作用域的方法(因此我们可以将其附加到该用户的存储列表中)


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

    和你处于同一位置……如果你击中:


    它将返回一个JSON响应,其中包含一个“scope”参数,这是一个以空格分隔的列表,列出了访问令牌的所有授予的作用域。

    虽然我现在意识到这有点陈旧,但对于从这里开始通过Google查找的人来说,可能值得注意的是,例如,从,PHP客户端库方法
    $client->fetchAccessTokenWithAuthCode($\u 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
    }
    
    注意上面的“范围”参数

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

    和您一样,几年后,我还没有找到一个提供此功能的客户机库方法;你是对的,它看起来相当基本(实际上,一个比较两个作用域列表的函数将是理想的,包括“profile”和“email”作用域的扩展帐户,提示Google人员!)

    [对于本例切换到PHP表示歉意,但我怀疑访问令牌包格式是相同的,因此应该可以采用类似的方法]