【问题标题】:Delegate domain wide authority for a script bound to Google Forms为绑定到 Google 表单的脚本委派域范围的权限
【发布时间】:2017-01-30 06:57:10
【问题描述】:

我想为公司域中的用户获取和设置自动转发详细信息。我的管理员让我成为委托管理员,以便我可以使用 AdminDirectory.Users 获取用户数据。 但是,当我尝试使用用户 ID 为用户获取自动转发/标签/过滤数据时,会引发以下错误:

some.user@domain.com 的委派被拒绝

这是引起错误的那一行:

var labels = Gmail.Users.Labels.list(user.id);

这似乎可以通过将域范围的权限委派给Service Account 来实现。但是,当我尝试此链接中突出显示的步骤时:Link,页面要求我选择一个项目。

这些项目中没有这个脚本,我不确定是不是因为它是bound to Google Forms

关于如何赋予此脚本相同的域范围权限权限的任何建议?

请帮忙!!

【问题讨论】:

    标签: google-apps-script google-oauth gmail-api google-forms google-admin-sdk


    【解决方案1】:

    为 Google 脚本创建服务帐户:

    1. 从 Google Script IDE 本身开始,然后从菜单中选择 Resources > Developer Console Project...
    2. 单击位于对话框顶部附近标记为“此脚本当前与项目相关联:”的链接。
    3. 从那里点击左侧导航中的凭据,然后单击创建凭据>服务帐户密钥按照流程创建服务帐户 - 对于角色,选择 项目> 服务帐户参与者
    4. 然后,您可以在您的 Google 脚本中使用下载的 .json 文件中的私钥和客户端 ID。

    注意:您需要:

    1. 让 G Suite 域管理员使用您想要的范围设置您的 client_id。 https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
    2. 通过 UrlFetch 使用 Gmail API,因为您无法让 Gmail 高级服务使用不同的 OAuth 令牌。您可以为此使用 OAuth2 库并遵循以下示例:https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/GoogleServiceAccount.gs

    【讨论】:

      【解决方案2】:

      首先,确保为您提供的链接中所述的服务帐户启用域范围的委派。因为您创建的服务帐户需要被授予访问您要访问的 Google Apps 域的用户数据的权限。

      同样在您的 Apps 脚本代码中,转到 Resource -> Advance Google Service,确保启用您用于您的应用程序的所有 Google 服务在这里创建。

      有关更多信息,请查看以下主题:

      【讨论】:

      • 创建服务帐户本身就是问题所在!服务帐户创建页面要求我选择一个项目,并且代码与表单相关联,并且不作为服务帐户项目列表中的项目。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 2017-01-04
      • 2015-12-29
      • 2013-12-06
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多