【问题标题】:Give access for service account to google accounts in classroom在课堂上授予服务帐户对谷歌帐户的访问权限
【发布时间】:2021-10-21 18:53:06
【问题描述】:

我想从我的服务器应用程序访问课堂记录。

我创建了一个服务帐户,但我无法从我的 google 帐户创建的课堂中获取记录。

我如何获得访问权限?谢谢

【问题讨论】:

    标签: python google-classroom


    【解决方案1】:

    创建一个服务帐户是不够的。您还必须执行域范围的委派并模拟您域中的其他用户。

    服务帐户授予域范围权限的主要目的是让这些帐户能够代表您域中的用户访问数据,否则服务帐户 就像另一个帐户一样,它正在尝试从“课堂”访问自己的数据。

    因此,当您创建此 服务帐户 以结束在您的域中模拟其他用户时,它将能够访问该用户可以从 Classroom 中的记录。

    至于这样做,您可能会受益于查看这份广泛的指南here

    您可以看到,这样做需要以下几点:

    1. 从服务帐户凭据创建一个Credentials 对象并包含您的操作所需的范围:
    from google.oauth2 import service_account
    
    SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly', 'https://www.googleapis.com/auth/classroom.announcements']
    SERVICE_ACCOUNT_FILE = '/path/to/service.json'
    
    credentials = service_account.Credentials.from_service_account_file(
            SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    
    1. 委派权限并模拟您域中的其他用户。
    delegated_credentials = credentials.with_subject('user@example.org')
    

    请注意,您将能够访问该用户可以访问的资源。因此,例如,如果您想访问一些只有课程创建者或域管理员才能访问的资源,您将必须分别模拟课程创建者或管理员。

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      相关资源
      最近更新 更多