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

服务帐号权限:

代码:

        $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) 进行测试,以验证该用户是否具有必要的权限。