检索客户端的 Google API 授予范围
Retrieving the Google API granted scopes for a client
我们正在使用混合身份验证流程,这样客户端就可以通过 JS 请求增量授权,并将生成的 code
传递给我们的 API 服务器进行处理。
我们需要的是以下之一:
用户可以通过刷新令牌或访问令牌使用哪些范围
一种将当前范围包含在 $client->authenticate($code)
响应中的方法(因此我们可以将它们与刷新令牌一起存储)
一种确定从 Google 到 $client->authenticate($code)
的响应中刚刚授予哪个范围的方法(因此我们可以将其附加到该用户的存储列表中)
我们想在集成页面上提供一个列表,供用户选择加入每个功能(日历、联系人、驱动器),并提供一个清晰的列表,列出哪些功能已启用,此外还会提示他们是否访问尚未授权的功能。除此之外,我不敢相信这不是 "a thing."
与您处于相同位置...如果您击中:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
它将 return 一个 JSON 响应,其中有一个 "scope" 参数,它是访问令牌的所有授予范围的 space 分隔列表。
虽然我现在意识到这有点过时了,但对于那些从现在开始通过 Google 找到它的人来说,可能值得注意的是访问令牌包,例如从 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"参数
这似乎没有在任何地方记录。
像你一样,几年后,我还没有找到提供此功能的客户端库方法;你是对的,它看起来相当基本(实际上,比较两个范围列表的函数是理想的,包括考虑 'profile' 和 'email' 范围的扩展,提示 hint Google 伙计们!)。
[对于示例切换到 PHP 表示歉意,但我怀疑访问令牌包格式是相同的,因此应该可以采用类似的方法]
我们正在使用混合身份验证流程,这样客户端就可以通过 JS 请求增量授权,并将生成的 code
传递给我们的 API 服务器进行处理。
我们需要的是以下之一:
用户可以通过刷新令牌或访问令牌使用哪些范围
一种将当前范围包含在
$client->authenticate($code)
响应中的方法(因此我们可以将它们与刷新令牌一起存储)一种确定从 Google 到
$client->authenticate($code)
的响应中刚刚授予哪个范围的方法(因此我们可以将其附加到该用户的存储列表中)
我们想在集成页面上提供一个列表,供用户选择加入每个功能(日历、联系人、驱动器),并提供一个清晰的列表,列出哪些功能已启用,此外还会提示他们是否访问尚未授权的功能。除此之外,我不敢相信这不是 "a thing."
与您处于相同位置...如果您击中:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
它将 return 一个 JSON 响应,其中有一个 "scope" 参数,它是访问令牌的所有授予范围的 space 分隔列表。
虽然我现在意识到这有点过时了,但对于那些从现在开始通过 Google 找到它的人来说,可能值得注意的是访问令牌包,例如从 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"参数
这似乎没有在任何地方记录。
像你一样,几年后,我还没有找到提供此功能的客户端库方法;你是对的,它看起来相当基本(实际上,比较两个范围列表的函数是理想的,包括考虑 'profile' 和 'email' 范围的扩展,提示 hint Google 伙计们!)。
[对于示例切换到 PHP 表示歉意,但我怀疑访问令牌包格式是相同的,因此应该可以采用类似的方法]