检索为客户端授予范围的Google API

CJ *_*son 3 google-api google-api-php-client

我们正在使用混合身份验证流程,以便通过JS请求客户端进行增量授权,并将结果code传递给我们的API服务器进行处理.

我们需要的是:

  1. 通过刷新令牌或访问令牌,用户可以使用哪些范围

  2. 一种在$client->authenticate($code)响应中包含当前作用域的方法(因此我们可以使用刷新令牌存储它们)

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

我们希望在集成页面上显示一个列表,供用户选择加入每个功能(日历,联系人,驱动器)并显示已启用哪些功能的清晰列表,以及提示他们是否访问尚未授权的功能特征.除此之外,我无法相信这不是"一件事".

Jos*_*ack 5

和你在同一个位置...如果你点击:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token =

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


Bri*_*n C 5

虽然我意识到这现在有点旧了,但对于那些从现在开始通过 Google 发现这一点的人来说,可能值得注意的是,从 PHP 客户端库方法等返回的访问令牌包实际上包含活动范围的$client->fetchAccessTokenWithAuthCode($_GET['code'])列表,带有关键“范围”。您应该能够解析它,而不需要进一步的 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
}
Run Code Online (Sandbox Code Playgroud)

注意上面的“scope”参数。

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

和您一样,几年后,我还没有找到提供此功能的客户端库方法;你是对的,这看起来相当基本(实际上,比较两个范围列表的函数是理想的,包括考虑“个人资料”和“电子邮件”范围的扩展,提示谷歌人员!)。

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