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

时间:2015-11-03 20:41:15

标签: google-api google-api-php-client

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

我们需要的是:

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

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

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

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

2 个答案:

答案 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的示例而道歉,但我怀疑访问令牌捆绑包格式是相同的,因此应该可以使用类似的方法]