我们正在使用混合身份验证流程,以便通过JS请求客户端进行增量授权,并将生成的code
传递给我们的API服务器进行处理。
我们需要的是:
用户可以通过刷新令牌或访问令牌使用哪些范围
一种在$client->authenticate($code)
响应中包含当前范围的方法(因此我们可以使用刷新令牌存储它们)
一种确定Google响应$client->authenticate($code)
的响应中授予的范围的方法(因此我们可以将其附加到该用户的存储列表中)
我们希望在集成页面上显示一个列表,供用户选择加入每个功能(日历,联系人,驱动器),并提供已启用哪些功能的清晰列表,以及提示他们是否访问不是-yet授权功能。除此之外,我无法相信这不是一件事。"
答案 0 :(得分:5)
和你在同一个位置......如果你点击:How to convert .ICO to .PNG?
它将返回一个JSON响应,该响应具有“scope”参数,该参数是访问令牌的所有已授予范围的空格分隔列表。
答案 1 :(得分:2)
虽然我现在知道这已经有点老了,但是对于那些从这里开始通过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
}
请注意上面的“ scope”参数。
这似乎没有记录在任何地方。
像您一样,几年后,我还没有找到提供此功能的客户端库方法。没错,这似乎很基础(实际上,比较两个范围列表的功能是理想的,包括考虑“个人资料”和“电子邮件”范围的扩展,提示暗示Google员工!)。
[为切换到PHP的示例而道歉,但我怀疑访问令牌捆绑包格式是相同的,因此应该可以使用类似的方法]