Google SDK API - 通过服务帐户更新 Workspace 用户配置文件数据(无权访问此 resource/api)
Google SDK API - update Workspace user profile data by service account (Not Authorized to access this resource/api)
我正在尝试将我们的用户配置文件从我们的内部 SaaS 同步到 Google Workspace 用户配置文件。特别是(性别、phone、职位、部门)。
看了半天,发现在Google云项目中通过OAuth是不行的,但是需要创建一个service account。我已经创建了它,但我仍然收到回复 未授权访问此 resource/api。
- 已启用全域委派。
- Admin SDK API 已启用。
- API 在 Workspace 安全中启用范围为“https://www.googleapis.com/auth/admin.directory.user”的客户端访问。
服务帐号权限:
代码:
$config = __DIR__ . '/project-users.json';
$client = new \Google\Client();
$client->setApplicationName('project-users');
$client->setAuthConfig($config);
$client->addScope(Google_Service_Directory::ADMIN_DIRECTORY_USER);
$client->setSubject('admin@domain.com');
$client->setAccessType('offline');
$gsdService = new \Google\Service\Directory($client);
$googleUser = new \Google\Service\Directory\User();
// Gender
$gender = new \Google\Service\Directory\UserGender();
$gender->setType('male');
// Phone
$phone = new \Google\Service\Directory\UserPhone();
$phone->setType('mobile');
$phone->setValue('123456789');
$googleUser->setPhones([$phone]);
// jobTitle and department
$organization = new \Google\Service\Directory\UserOrganization();
$organization->setPrimary(TRUE);
$organization->setTitle('Lead Developer');
$organization->setDepartment('Dev');
$googleUser->setOrganizations([$organization]);
$gsdService->users->update('fname.lname@domain.com', $googleUser);
使用具有 domain-wide 授权的服务帐户时,您需要模拟具有必要授权的用户
- 目录 API 方法 users.update 只能由具有相应角色/权限的域管理员执行。
- 见how to make a user an admin。
- 如有疑问,您可以使用授权为 'admin@domain.com' 的 [Try this API](Try this API) 进行测试,以验证该用户是否具有必要的权限。
我正在尝试将我们的用户配置文件从我们的内部 SaaS 同步到 Google Workspace 用户配置文件。特别是(性别、phone、职位、部门)。 看了半天,发现在Google云项目中通过OAuth是不行的,但是需要创建一个service account。我已经创建了它,但我仍然收到回复 未授权访问此 resource/api。
- 已启用全域委派。
- Admin SDK API 已启用。
- API 在 Workspace 安全中启用范围为“https://www.googleapis.com/auth/admin.directory.user”的客户端访问。
服务帐号权限:
代码:
$config = __DIR__ . '/project-users.json';
$client = new \Google\Client();
$client->setApplicationName('project-users');
$client->setAuthConfig($config);
$client->addScope(Google_Service_Directory::ADMIN_DIRECTORY_USER);
$client->setSubject('admin@domain.com');
$client->setAccessType('offline');
$gsdService = new \Google\Service\Directory($client);
$googleUser = new \Google\Service\Directory\User();
// Gender
$gender = new \Google\Service\Directory\UserGender();
$gender->setType('male');
// Phone
$phone = new \Google\Service\Directory\UserPhone();
$phone->setType('mobile');
$phone->setValue('123456789');
$googleUser->setPhones([$phone]);
// jobTitle and department
$organization = new \Google\Service\Directory\UserOrganization();
$organization->setPrimary(TRUE);
$organization->setTitle('Lead Developer');
$organization->setDepartment('Dev');
$googleUser->setOrganizations([$organization]);
$gsdService->users->update('fname.lname@domain.com', $googleUser);
使用具有 domain-wide 授权的服务帐户时,您需要模拟具有必要授权的用户
- 目录 API 方法 users.update 只能由具有相应角色/权限的域管理员执行。
- 见how to make a user an admin。
- 如有疑问,您可以使用授权为 'admin@domain.com' 的 [Try this API](Try this API) 进行测试,以验证该用户是否具有必要的权限。