Google api 如何在cron作业中通过OAuth2访问admin.directory.group?

Google api 如何在cron作业中通过OAuth2访问admin.directory.group?,google-api,google-admin-sdk,Google Api,Google Admin Sdk,我正在尝试(但失败)使用OAuth2通过命令行脚本调用admin.directory.group作用域。我尝试配置服务帐户以执行此操作,但收到以下错误消息: 调用GET时出错:(403)无权访问此资源/api 我还尝试使用一个“已安装”的应用程序类型,手动获取授权代码,随后获取一个刷新令牌,但得到了相同的未授权错误 我确实选中了“启用API访问”,并且在我的项目中启用了“AdminSDK”(尽管奇怪的是,它没有将Admin.directory.group列为AdminSDK的作用域之一) 我做错

我正在尝试(但失败)使用OAuth2通过命令行脚本调用admin.directory.group作用域。我尝试配置服务帐户以执行此操作,但收到以下错误消息:

调用GET时出错:(403)无权访问此资源/api

我还尝试使用一个“已安装”的应用程序类型,手动获取授权代码,随后获取一个刷新令牌,但得到了相同的
未授权
错误

我确实选中了“启用API访问”,并且在我的项目中启用了“AdminSDK”(尽管奇怪的是,它没有将
Admin.directory.group
列为AdminSDK的作用域之一)


我做错了什么?

您是否在管理控制台中添加了客户端ID以授予Admin SDK第三方客户端oauth访问权限

以下是关于如何为任务API执行此操作的说明:

它应该与Admin SDK类似,只是您必须将Admin SDK作为作用域

我最终使用服务帐户实现了这一点。我确实必须按照建议授予第三方访问权限,但方式不同:

  • 登录到管理控制台
  • 安全->高级设置->身份验证-> 管理第三方OAuth客户端访问
  • 通过将
    客户机名称
    设置为服务帐户的客户机ID,并将API范围设置为Admin SDK中所需的任何内容(例如,
    https://www.googleapis.com/auth/admin.directory.group
  • 我需要做的另一件事是确保我的请求是代表管理用户提出的。使用PHP API,设置凭据对象如下所示:

    $cred = new Google_Auth_AssertionCredentials(
        $clientEmail,
        'https://www.googleapis.com/auth/admin.directory.group',
        file_get_contents($keyFile));
    $cred->sub = 'admin@example.com';
    

    现在,我能够使用
    Google\u Service\u目录
    类成功地进行调用。

    我确实尝试过这一点,但所有这些似乎都适用于OAuth1,而不是OAuth2。是否不可能使用OAuth2进行此操作?