检索用户的所有组 ->Google Directory API

问题描述 投票:0回答:1

我正在尝试创建一个页面,我的 NGO 内的用户可以使用其 GSuite 帐户登录。他们的组成员身份将决定他们可以看到页面的哪些部分。当我年轻的时候,我曾经用 php 编写脚本,我想我现在已经非常老派了,但这是我唯一能做的事情:D

要检索组成员身份,我有以下代码:

配置:

require_once "GoogleAPI/vendor/autoload.php";
$gClient = new Google_Client();
(...)
$gClient->addScope("https://www.googleapis.com/auth/plus.login");
$gClient->addScope("https://www.googleapis.com/auth/userinfo.email");
$gClient->addScope("https://www.googleapis.com/auth/admin.directory.group.readonly");
$gClient->addScope("https://www.googleapis.com/auth/admin.directory.group");
$gClient->addScope("https://www.googleapis.com/auth/admin.directory.user");

回调文件:

$oAuth = new Google_Service_Oauth2($gClient);
$userData = $oAuth->userinfo_v2_me->get();

$gruppen = new Google_Service_Directory($gClient);
$optParams = array('userKey' => $userData['id']);
$retGruppen = $gruppen->groups->listGroups($optParams);

$userData 返回我想要的有关用户的所有数据。效果很好。

问题在于调用方法“listGroups”。我得到了一个很奇怪的回应。

通过我经常使用的帐户,它可以正常工作,没有任何问题。我创建了一个测试帐户 - 但这个帐户似乎根本不起作用。

开发人员控制台显示我收到代码 403,但这很奇怪,因为它仍然适用于一个帐户,而不适用于另一个帐户。

通过各种 var_dump 我发现

var_dump($gruppen->groups->listGroups($optParams));

适用于所有情况,虽然一旦我添加方法“->listGroups($optParams)”,它就不再适用于测试帐户的情况,但在常规帐户情况下它就可以了

php oauth google-admin-sdk google-directory-api
1个回答
0
投票

如果您使用 OAuth2 来验证用户身份,则无法使用 Google_Client 来检查用户组。

您应该需要在 Google Cloud Console (https://console.cloud.google.com) 中创建一个应用程序,并根据凭据创建一个服务帐户。

完成此操作后,您应该登录 Google 管理控制台(Google Workspace 控制台),然后创建自定义角色或使用有权读取群组的角色,在创建/选择的角色上将服务帐户分配为管理员。

© www.soinside.com 2019 - 2024. All rights reserved.